summaryrefslogtreecommitdiffstats
path: root/package/busybox/patches/523-conffiles_fix.patch
blob: 15ac083cdfc28fd4c9268570a91ceec9b62fe0f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Index: busybox-1.8.2/archival/libipkg/pkg.c
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg.c	2008-01-03 17:25:55.000000000 +0100
+++ busybox-1.8.2/archival/libipkg/pkg.c	2008-01-03 17:33:57.000000000 +0100
@@ -575,25 +575,28 @@
 		    return temp;
 	       }
 
-               len = 14 ;
+               len = sizeof("Conffiles:") ;
 	       for (iter = pkg->conffiles.head; iter; iter = iter->next) {
 		    if (iter->data->name && iter->data->value) {
-                       len = len + (strlen(iter->data->name)+strlen(iter->data->value)+5);
-		    }
+                        /* " <filename> <md5hash>"  */
+		        len += 1+strlen(iter->data->name)+1+strlen(iter->data->value); 
+                    }
 	       }
+               len +=2; /* "\n\0" */
                temp = (char *)realloc(temp,len);
                if ( temp == NULL ){
 	          fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
 	          return NULL;
                }
                temp[0]='\0';
-               strncpy(temp, "Conffiles:\n", 12);
+	       strcpy(temp, "Conffiles:");
 	       for (iter = pkg->conffiles.head; iter; iter = iter->next) {
 		    if (iter->data->name && iter->data->value) {
-                         snprintf(line_str, LINE_LEN, "%s %s\n", iter->data->name, iter->data->value);
+                         snprintf(line_str, LINE_LEN, " %s %s", iter->data->name, iter->data->value);
                          strncat(temp, line_str, strlen(line_str));           
 		    }
 	       }
+               strcat(temp, "\n");
 	  } else if (strcasecmp(field, "Conflicts") == 0) {
 	       int i;
 
Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg_parse.c	2008-01-03 17:25:55.000000000 +0100
+++ busybox-1.8.2/archival/libipkg/pkg_parse.c	2008-01-03 17:30:14.000000000 +0100
 -85,20 +85,17 @@
 {
     char file_name[1048], md5sum[1048];  /* please tell me there aren't any longer that 1k */
 
-    if(!strncmp(raw, "Conffiles:", 10))
+    if(!strncmp(raw, "Conffiles:",10))
 	raw += strlen("Conffiles:");
 
+    while(*raw && isspace(*raw)) raw++;
     while(*raw && (sscanf(raw, "%s%s", file_name, md5sum) == 2)){
 	conffile_list_append(&pkg->conffiles, file_name, md5sum);
 	/*	fprintf(stderr, "%s %s ", file_name, md5sum);*/
-	while (*raw && isspace(*raw)) {
-	    raw++;
-	}
-	raw += strlen(file_name);
-	while (*raw && isspace(*raw)) {
-	    raw++;
-	}
-	raw += strlen(md5sum);
+        raw += strlen(file_name);
+	while(*raw && isspace(*raw)) raw++;
+        raw += strlen(md5sum);
+        while(*raw && isspace(*raw)) raw++;
     }
 }