openwrt/package/busybox/patches/523-conffiles_fix.patch

60 lines
2.0 KiB
Diff
Raw Normal View History

--- a/archival/libipkg/pkg.c
+++ b/archival/libipkg/pkg.c
@@ -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;
--- a/archival/libipkg/pkg_parse.c
+++ b/archival/libipkg/pkg_parse.c
@@ -88,17 +88,14 @@
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++;
- }
+ while(*raw && isspace(*raw)) raw++;
raw += strlen(md5sum);
+ while(*raw && isspace(*raw)) raw++;
}
}