523-conffiles_fix.patch 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. --- a/archival/libipkg/pkg.c
  2. +++ b/archival/libipkg/pkg.c
  3. @@ -575,25 +575,28 @@
  4. return temp;
  5. }
  6. - len = 14 ;
  7. + len = sizeof("Conffiles:") ;
  8. for (iter = pkg->conffiles.head; iter; iter = iter->next) {
  9. if (iter->data->name && iter->data->value) {
  10. - len = len + (strlen(iter->data->name)+strlen(iter->data->value)+5);
  11. - }
  12. + /* " <filename> <md5hash>" */
  13. + len += 1+strlen(iter->data->name)+1+strlen(iter->data->value);
  14. + }
  15. }
  16. + len +=2; /* "\n\0" */
  17. temp = (char *)realloc(temp,len);
  18. if ( temp == NULL ){
  19. fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
  20. return NULL;
  21. }
  22. temp[0]='\0';
  23. - strncpy(temp, "Conffiles:\n", 12);
  24. + strcpy(temp, "Conffiles:");
  25. for (iter = pkg->conffiles.head; iter; iter = iter->next) {
  26. if (iter->data->name && iter->data->value) {
  27. - snprintf(line_str, LINE_LEN, "%s %s\n", iter->data->name, iter->data->value);
  28. + snprintf(line_str, LINE_LEN, " %s %s", iter->data->name, iter->data->value);
  29. strncat(temp, line_str, strlen(line_str));
  30. }
  31. }
  32. + strcat(temp, "\n");
  33. } else if (strcasecmp(field, "Conflicts") == 0) {
  34. int i;
  35. --- a/archival/libipkg/pkg_parse.c
  36. +++ b/archival/libipkg/pkg_parse.c
  37. @@ -88,17 +88,14 @@
  38. if(!strncmp(raw, "Conffiles:", 10))
  39. raw += strlen("Conffiles:");
  40. + while(*raw && isspace(*raw)) raw++;
  41. while(*raw && (sscanf(raw, "%s%s", file_name, md5sum) == 2)){
  42. conffile_list_append(&pkg->conffiles, file_name, md5sum);
  43. /* fprintf(stderr, "%s %s ", file_name, md5sum);*/
  44. - while (*raw && isspace(*raw)) {
  45. - raw++;
  46. - }
  47. raw += strlen(file_name);
  48. - while (*raw && isspace(*raw)) {
  49. - raw++;
  50. - }
  51. + while(*raw && isspace(*raw)) raw++;
  52. raw += strlen(md5sum);
  53. + while(*raw && isspace(*raw)) raw++;
  54. }
  55. }