Репозиторий ALT Linux backports/2.4
Последнее обновление: 9 июля 2008 | Пакетов: 497 | Посещений: 1584480
 поиск   регистрация   авторизация 
 
Группа :: Система/Библиотеки
Пакет: libfdisk0

 Главная   Изменения   Спек   Патчи   Загрузить   Bugs and FR 

Патч: libfdisk0-20041101-alt-mem.patch


diff -uprk.orig libfdisk0-20041101.orig/Makefile libfdisk0-20041101/Makefile
--- libfdisk0-20041101.orig/Makefile	2004-11-09 15:03:30 +0300
+++ libfdisk0-20041101/Makefile	2004-12-24 19:18:58 +0300
@@ -1,6 +1,5 @@
 # DEBUGFLAGS = -g
-CFLAGS     = -Wall $(DEBUGFLAGS) $(INCLUDEPATH) -D_GNU_SOURCE=1 -O -Os -fno-exceptions -fomit-frame-pointer -pipe -s
-CFLAGS += -fPIC -Os -fno-exceptions -fomit-frame-pointer -pipe -s
+CFLAGS     = $(RPM_OPT_FLAGS) $(DEBUGFLAGS) $(INCLUDEPATH) -D_GNU_SOURCE=1 -fPIC
 
 
 LDFLAGS    = $(LIBPATH)
@@ -27,7 +26,7 @@ testfdisk: testfdisk.o $(LIBFDISK_SO)
 install:	$(LIBFDISK_SO)
 	install -d -m 755 $(DESTDIR)$(LIBDIR)
 	install -d -m 755 $(DESTDIR)$(INCLUDEDIR)/libfdisk/
-	install -s -m 755 $(LIBFDISK_SO) $(DESTDIR)$(LIBDIR)
+	install -p -m 755 $(LIBFDISK_SO) $(DESTDIR)$(LIBDIR)
 	pushd $(DESTDIR)$(LIBDIR);ln -sf $(LIBFDISK_SO) libfdisk.so
 	install -m 644 $(HEADERS) $(DESTDIR)$(INCLUDEDIR)/libfdisk/
 
diff -uprk.orig libfdisk0-20041101.orig/partition.c libfdisk0-20041101/partition.c
--- libfdisk0-20041101.orig/partition.c	2004-11-01 17:06:13 +0300
+++ libfdisk0-20041101/partition.c	2004-12-24 19:41:04 +0300
@@ -553,6 +553,10 @@ int fdiskReadPartitions( HardDrive *hd )
 	fdiskSetAttrPartition( hd, i, &p );
     }
 
+    memset(pt, 0, sizeof(*pt));
+    free(pt); /* RawPartitionTable */
+    pt = 0;
+
     /* now pursue extended partition */
     /* we do not handle more than one extended partition per drive */
     /* read in extended partition(s) if they exist */
@@ -561,7 +565,6 @@ int fdiskReadPartitions( HardDrive *hd )
 	exttype = hd->table[i].type.current;
 	if (fdiskIsExtended(exttype)) {
 	    
-	    RawPartitionTable *extended;
 	    unsigned int ext_start;
 	    unsigned int ext_size;
 	    unsigned int cur_start;
@@ -592,6 +595,8 @@ int fdiskReadPartitions( HardDrive *hd )
 	    /* be using your OS's fdisk if this is the case, cause    */
 	    /* it is insane and only it can understand the madness    */
 	    while (1) {
+		RawPartitionTable *extended;
+
 		if ((s=fdiskReadPartitionTable(hd, cur_start, &extended)))
 		    return s;
 
@@ -708,11 +713,15 @@ int fdiskReadPartitions( HardDrive *hd )
 		}
 
 		/* see if we have another extended partition to follow */
-		if (!sawext)
+		if (!sawext) {
+		    memset(extended, 0, sizeof(*extended));
+		    free(extended); /* RawPartitionTable */
 		    break;
-		else {
+		} else {
 		    cur_start  = extended->entry[sawext-1].start + ext_start;
 		    cur_size   = extended->entry[sawext-1].size;
+		    memset(extended, 0, sizeof(*extended));
+		    free(extended); /* RawPartitionTable */
 		}
 	    }
 	}
diff -uprk.orig libfdisk0-20041101.orig/partspec.c libfdisk0-20041101/partspec.c
--- libfdisk0-20041101.orig/partspec.c	2000-02-28 09:04:43 +0300
+++ libfdisk0-20041101/partspec.c	2004-12-24 19:46:15 +0300
@@ -237,8 +237,7 @@ int fdiskDeletePartitionSpec( PartitionS
 	if (spec->entry[j].partition.immutable)
 	    return FDISK_ERR_BADNUM;
 	
-	if (spec->entry[j].name)
-	    free(spec->entry[j].name);
+	free(spec->entry[j].name);
 	for (k=j; k < spec->num-1; k++)
 	    memcpy(&spec->entry[k], &spec->entry[k+1],
 		   sizeof(PartitionSpecEntry));
@@ -255,10 +254,12 @@ int fdiskWipePartitionSpec( PartitionSpe
     unsigned int i;
 
     for (i=0; i<spec->num; i++)
+    {
 	free(spec->entry[i].name);
+	memset(&spec->entry[i], 0, sizeof(PartitionSpecEntry));
+    }
 
     memset(spec, 0, sizeof(PartitionSpec));
-    spec->num = 0;
     return FDISK_SUCCESS;
 }
 
@@ -326,8 +327,7 @@ int fdiskCleanOriginalSpecs( HardDrive *
 	    }
 		    
 	    if (remove) {
-		if (spec->entry[j].name)
-		    free(spec->entry[j].name);
+		free(spec->entry[j].name);
 		for (k=j; k < spec->num-1; k++) 
 		    memcpy(&spec->entry[k], &spec->entry[k+1],
 			   sizeof(PartitionSpecEntry));
@@ -350,6 +350,8 @@ int fdiskSetupPartitionSpec( HardDrive *
     Partition    *p;
     char         *name;
     
+    memset(spec, 0, sizeof(*spec));
+
     /* make sure there are any partitions to process */
     status = 0;
     for (i=0; i<numhd; i++)
diff -uprk.orig libfdisk0-20041101.orig/rawio.c libfdisk0-20041101/rawio.c
--- libfdisk0-20041101.orig/rawio.c	2004-11-01 17:08:32 +0300
+++ libfdisk0-20041101/rawio.c	2004-12-24 19:18:49 +0300
@@ -181,7 +181,8 @@ int fdiskReadPartitionTable(HardDrive *h
 	return FDISK_ERR_BADMAGIC;
 
     t = (RawPartitionTable *) malloc(sizeof(RawPartitionTable));
-    
+    memset(t, 0, sizeof(RawPartitionTable));
+
     for (i=0; i<4; i++){
 	memcpy(  &t->entry[i],
 		 b+PARTTBLOFF+i*sizeof(RawPartition),
 
design & coding: Vladimir Lettiev aka crux © 2004-2005