Fri, 03 Aug 2012 20:11:53 +0200
Neutralize buggy code causing OpenPKG to have 'fatal problems' in
spite of correct installation, configuration, and operation. An
administrator suffering from this failure is even unable to
uninstall the flawed software.
1 Index: src/interface.c
2 diff -Nau src/interface.c.orig src/interface.c
3 --- src/interface.c.orig 2005-09-10 09:25:40.000000000 +0200
4 +++ src/interface.c 2006-10-30 23:18:46.644745000 +0100
5 @@ -28,8 +28,19 @@
6 #include <net/if.h> /* ? */
7 #include <netinet/in.h> /* ? */
8 #include <arpa/inet.h> /* ? */
9 +#if (defined(sun) && defined(__svr4__))
10 +#include <sys/sockio.h>
11 +#endif
12 #include "gmediaserver.h"
14 +#ifndef MAX
15 +#define MAX(a,b) ((a) > (b) ? (a) : (b))
16 +#endif
17 +
18 +#ifndef MIN
19 +#define MIN(a,b) ((a) < (b) ? (a) : (b))
20 +#endif
21 +
22 char *
23 get_ip_by_spec(char *spec)
24 {
25 Index: src/metadata.c
26 diff -Nau src/metadata.c.orig src/metadata.c
27 --- src/metadata.c.orig 2007-02-27 14:10:38.630894000 +0100
28 +++ src/metadata.c 2007-02-27 14:11:50.191849000 +0100
29 @@ -1071,6 +1071,7 @@
30 uint32_t c;
31 uint32_t child_count = 0;
33 + root_entry = make_entry(ROOT_ENTRY_NAME, -1, true);
34 children = xmalloc(sizeof(int32_t) * pathc);
35 for (c = 0; c < pathc; c++) {
36 Entry *entry;
37 @@ -1088,13 +1089,12 @@
38 free(tmp);
39 }
41 - entry = scan_entry(pathv[c], name, -1, indent_size, NULL);
42 + entry = scan_entry(pathv[c], name, root_entry->id, indent_size, NULL);
43 if (entry != NULL)
44 children[child_count++] = entry->id;
45 free(name);
46 }
47 if (child_count != 0) {
48 - root_entry = make_entry(ROOT_ENTRY_NAME, -1, true);
49 detail = get_entry_detail(root_entry, DETAIL_CHILDREN);
50 detail->data.children.count = child_count;
51 detail->data.children.list = children;
52 Index: lib/Makefile.in
53 diff -Nau lib/Makefile.in.orig lib/Makefile.in
54 --- lib/Makefile.in.orig 2006-08-29 22:53:57.000000000 +0200
55 +++ lib/Makefile.in 2006-11-01 10:25:38.000000000 +0100
56 @@ -112,7 +112,16 @@
57 full-write.$(OBJEXT) getnline.$(OBJEXT) progname.$(OBJEXT) \
58 striconv.$(OBJEXT) version-etc.$(OBJEXT) xalloc-die.$(OBJEXT) \
59 xgethostname.$(OBJEXT) xstrndup.$(OBJEXT) xvasprintf.$(OBJEXT) \
60 - xasprintf.$(OBJEXT)
61 + xasprintf.$(OBJEXT) xmalloc.$(OBJEXT) quote.$(OBJEXT) error.$(OBJEXT) \
62 + quotearg.$(OBJEXT) strftime.$(OBJEXT) \
63 + strndup.$(OBJEXT) strnlen.$(OBJEXT) \
64 + getopt.$(OBJEXT) getopt1.$(OBJEXT) \
65 + basename.$(OBJEXT) dirname.$(OBJEXT) \
66 + vasprintf.$(OBJEXT) vasnprintf.$(OBJEXT) \
67 + full-read.$(OBJEXT) safe-read.$(OBJEXT) \
68 + full-write.$(OBJEXT) safe-write.$(OBJEXT) \
69 + printf-args.$(OBJEXT) printf-parse.$(OBJEXT) \
70 + exitfail.$(OBJEXT) getndelim2.$(OBJEXT) sig2str.$(OBJEXT)
71 libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS)
72 LTLIBRARIES = $(noinst_LTLIBRARIES)
73 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
74 @@ -553,7 +562,7 @@
75 -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
76 libgnu.a: $(libgnu_a_OBJECTS) $(libgnu_a_DEPENDENCIES)
77 -rm -f libgnu.a
78 - $(libgnu_a_AR) libgnu.a $(libgnu_a_OBJECTS) $(libgnu_a_LIBADD)
79 + $(libgnu_a_AR) libgnu.a $(libgnu_a_OBJECTS)
80 $(RANLIB) libgnu.a
82 clean-noinstLTLIBRARIES: