source: clfs-embedded/patches/busybox-1.13.2-branch_update-2.patch @ b36d112

Last change on this file since b36d112 was b36d112, checked in by Jim Gifford <clfs@…>, 15 years ago

Update to Busybox Branch Update Patch

  • Property mode set to 100644
File size: 10.6 KB
RevLine 
[0e9e889]1Submitted By: Jim Gifford (jim at cross-lfs dot org)
[b36d112]2Date: 02-03-2009
[0e9e889]3Initial Package Version: 1.13.2
4Origin: Upstream
5Upstream Status: Applied
6Description: This is a branch update for busybox-1.13.2, and should be
7             rechecked periodically.
8
9diff -Naur busybox-1.13.2.orig/archival/tar.c busybox-1.13.2/archival/tar.c
10--- busybox-1.13.2.orig/archival/tar.c  2008-11-09 09:28:02.000000000 -0800
[b36d112]11+++ busybox-1.13.2/archival/tar.c       2009-02-03 18:52:40.994695068 -0800
[0e9e889]12@@ -591,8 +591,6 @@
13        struct TarBallInfo tbInfo;
14 
15        tbInfo.hlInfoHead = NULL;
16-
17-       fchmod(tar_fd, 0644);
18        tbInfo.tarFd = tar_fd;
19        tbInfo.verboseFlag = verboseFlag;
20 
[b36d112]21diff -Naur busybox-1.13.2.orig/init/init.c busybox-1.13.2/init/init.c
22--- busybox-1.13.2.orig/init/init.c     2008-12-30 19:06:45.000000000 -0800
23+++ busybox-1.13.2/init/init.c  2009-02-03 18:52:38.186515155 -0800
24@@ -671,15 +671,14 @@
25  */
26 static void parse_inittab(void)
27 {
28+#if ENABLE_FEATURE_USE_INITTAB
29        char *token[4];
30-       /* order must correspond to SYSINIT..RESTART constants */
31-       static const char actions[] ALIGN1 =
32-               "sysinit\0""respawn\0""askfirst\0""wait\0""once\0"
33-               "ctrlaltdel\0""shutdown\0""restart\0";
34-
35-       parser_t *parser = config_open2(INITTAB, fopen_for_read);
36-       /* No inittab file -- set up some default behavior */
37-       if (parser == NULL) {
38+       parser_t *parser = config_open2("/etc/inittab", fopen_for_read);
39+
40+       if (parser == NULL)
41+#endif
42+       {
43+               /* No inittab file -- set up some default behavior */
44                /* Reboot on Ctrl-Alt-Del */
45                new_init_action(CTRLALTDEL, "reboot", "");
46                /* Umount all filesystems on halt/reboot */
47@@ -699,11 +698,17 @@
48                new_init_action(SYSINIT, INIT_SCRIPT, "");
49                return;
50        }
51+
52+#if ENABLE_FEATURE_USE_INITTAB
53        /* optional_tty:ignored_runlevel:action:command
54         * Delims are not to be collapsed and need exactly 4 tokens
55         */
56        while (config_read(parser, token, 4, 0, "#:",
57                                PARSE_NORMAL & ~(PARSE_TRIM | PARSE_COLLAPSE))) {
58+               /* order must correspond to SYSINIT..RESTART constants */
59+               static const char actions[] ALIGN1 =
60+                       "sysinit\0""respawn\0""askfirst\0""wait\0""once\0"
61+                       "ctrlaltdel\0""shutdown\0""restart\0";
62                int action;
63                char *tty = token[0];
64 
65@@ -727,6 +732,7 @@
66                                parser->lineno);
67        }
68        config_close(parser);
69+#endif
70 }
71 
72 #if ENABLE_FEATURE_USE_INITTAB
[0e9e889]73diff -Naur busybox-1.13.2.orig/modutils/depmod.c busybox-1.13.2/modutils/depmod.c
74--- busybox-1.13.2.orig/modutils/depmod.c       2008-11-09 09:28:03.000000000 -0800
[b36d112]75+++ busybox-1.13.2/modutils/depmod.c    2009-02-03 18:52:37.966500907 -0800
[0e9e889]76@@ -33,7 +33,7 @@
77 enum {
78        ARG_a = (1<<0), /* All modules, ignore mods in argv */
79        ARG_A = (1<<1), /* Only emit .ko that are newer than modules.dep file */
80-       ARG_b = (1<<2), /* not /lib/modules/$(uname -r)/ but this base-dir */
81+       ARG_b = (1<<2), /* base directory when modules are in staging area */
82        ARG_e = (1<<3), /* with -F, print unresolved symbols */
83        ARG_F = (1<<4), /* System.map that contains the symbols */
84        ARG_n = (1<<5)  /* dry-run, print to stdout only */
85@@ -57,7 +57,7 @@
86        *first = info;
87 
88        info->dnext = info->dprev = info;
89-       info->name = xstrdup(fname);
90+       info->name = xasprintf("/%s", fname);
91        info->modname = filename2modname(fname, NULL);
92        for (ptr = image; ptr < image + len - 10; ptr++) {
93                if (strncmp(ptr, "depends=", 8) == 0) {
94@@ -123,44 +123,61 @@
95        }
96 }
97 
98+static void xfreopen_write(const char *file, FILE *f)
99+{
100+       if (freopen(file, "w", f) == NULL)
101+               bb_perror_msg_and_die("can't open '%s'", file);
102+}
103+
104 int depmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
105 int depmod_main(int argc UNUSED_PARAM, char **argv)
106 {
107        module_info *modules = NULL, *m, *dep;
108-       char *moddir_base = (char *)CONFIG_DEFAULT_MODULES_DIR;
109+       const char *moddir_base = "/";
110+       char *moddir, *version;
111+       struct utsname uts;
112        int tmp;
113 
114        getopt32(argv, "aAb:eF:n", &moddir_base, NULL);
115        argv += optind;
116 
117        /* goto modules location */
118+       xchdir(moddir_base);
119 
120        /* If a version is provided, then that kernel version's module directory
121         * is used, rather than the current kernel version (as returned by
122         * "uname -r").  */
123-       xchdir(moddir_base);
124-       if (*argv && (sscanf(*argv, "%d.%d.%d", &tmp, &tmp, &tmp) == 3)) {
125-               xchdir(*argv++);
126+       if (*argv && sscanf(*argv, "%d.%d.%d", &tmp, &tmp, &tmp) == 3) {
127+               version = *argv++;
128        } else {
129-               struct utsname uts;
130                uname(&uts);
131-               xchdir(uts.release);
132+               version = uts.release;
133        }
134-       /* If no modules are given on the command-line, -a is on per default.  */
135-       option_mask32 |= *argv == NULL;
136+       moddir = concat_path_file(&CONFIG_DEFAULT_MODULES_DIR[1], version);
137 
138        /* Scan modules */
139-       moddir_base = xrealloc_getcwd_or_warn(NULL);
140-       do {
141-               recursive_action((option_mask32 & ARG_a) ? moddir_base : *argv,
142-                               ACTION_RECURSE, parse_module, NULL,  &modules, 0);
143-       } while (!(option_mask32 & ARG_a) && *(++argv));
144+       if (*argv) {
145+               char *modfile;
146+               struct stat sb;
147+               do {
148+                       modfile = concat_path_file(moddir, *argv);
149+                       xstat(modfile, &sb);
150+                       parse_module(modfile, &sb, &modules, 0);
151+                       free(modfile);
152+               } while (*(++argv));
153+       } else {
154+               recursive_action(moddir, ACTION_RECURSE,
155+                                parse_module, NULL, &modules, 0);
156+       }
157+
158+       /* Prepare for writing out the dep files */
159+       xchdir(moddir);
160        if (ENABLE_FEATURE_CLEAN_UP)
161-               free(moddir_base);
162+               free(moddir);
163 
164        /* Generate dependency and alias files */
165        if (!(option_mask32 & ARG_n))
166-               freopen(CONFIG_DEFAULT_DEPMOD_FILE, "w", stdout);
167+               xfreopen_write(CONFIG_DEFAULT_DEPMOD_FILE, stdout);
168        for (m = modules; m != NULL; m = m->next) {
169                printf("%s:", m->name);
170 
171@@ -174,12 +191,12 @@
172                        dep->dprev->dnext = dep->dnext;
173                        dep->dnext = dep->dprev = dep;
174                }
175-               puts("");
176+               bb_putchar('\n');
177        }
178 
179 #if ENABLE_FEATURE_MODUTILS_ALIAS
180        if (!(option_mask32 & ARG_n))
181-               freopen("modules.alias", "w", stdout);
182+               xfreopen_write("modules.alias", stdout);
183        for (m = modules; m != NULL; m = m->next) {
184                while (m->aliases) {
185                        printf("alias %s %s\n",
186@@ -190,7 +207,7 @@
187 #endif
188 #if ENABLE_FEATURE_MODUTILS_SYMBOLS
189        if (!(option_mask32 & ARG_n))
190-               freopen("modules.symbols", "w", stdout);
191+               xfreopen_write("modules.symbols", stdout);
192        for (m = modules; m != NULL; m = m->next) {
193                while (m->symbols) {
194                        printf("alias symbol:%s %s\n",
[b36d112]195diff -Naur busybox-1.13.2.orig/modutils/modutils-24.c busybox-1.13.2/modutils/modutils-24.c
196--- busybox-1.13.2.orig/modutils/modutils-24.c  2008-11-28 22:48:56.000000000 -0800
197+++ busybox-1.13.2/modutils/modutils-24.c       2009-02-03 18:52:40.062637519 -0800
198@@ -2150,7 +2150,7 @@
199        sec->name = name;
200        sec->idx = newidx;
201        if (size)
202-               sec->contents = xmalloc(size);
203+               sec->contents = xzalloc(size);
204 
205        obj_insert_section_load_order(f, sec);
206 
207@@ -2165,7 +2165,7 @@
208        int newidx = f->header.e_shnum++;
209        struct obj_section *sec;
210 
211-       f->sections = xrealloc(f->sections, (newidx + 1) * sizeof(sec));
212+       f->sections = xrealloc_vector(f->sections, 2, newidx);
213        f->sections[newidx] = sec = arch_new_section();
214 
215        sec->header.sh_type = SHT_PROGBITS;
216@@ -2175,7 +2175,7 @@
217        sec->name = name;
218        sec->idx = newidx;
219        if (size)
220-               sec->contents = xmalloc(size);
221+               sec->contents = xzalloc(size);
222 
223        sec->load_next = f->load_order;
224        f->load_order = sec;
225@@ -2571,8 +2571,7 @@
226        /* Collect the modules' symbols.  */
227 
228        if (nmod) {
229-               ext_modules = modules = xmalloc(nmod * sizeof(*modules));
230-               memset(modules, 0, nmod * sizeof(*modules));
231+               ext_modules = modules = xzalloc(nmod * sizeof(*modules));
232                for (i = 0, mn = module_names, m = modules;
233                                i < nmod; ++i, ++m, mn += strlen(mn) + 1) {
234                        struct new_module_info info;
235@@ -2652,13 +2651,14 @@
236 }
237 
238 
239-static void  new_create_this_module(struct obj_file *f, const char *m_name)
240+static void new_create_this_module(struct obj_file *f, const char *m_name)
241 {
242        struct obj_section *sec;
243 
244        sec = obj_create_alloced_section_first(f, ".this", tgt_sizeof_long,
245                        sizeof(struct new_module));
246-       memset(sec->contents, 0, sizeof(struct new_module));
247+       /* done by obj_create_alloced_section_first: */
248+       /*memset(sec->contents, 0, sizeof(struct new_module));*/
249 
250        obj_add_symbol(f, SPFX "__this_module", -1,
251                        ELF_ST_INFO(STB_LOCAL, STT_OBJECT), sec->idx, 0,
252@@ -2965,9 +2965,9 @@
253                if (i == f->header.e_shnum) {
254                        struct obj_section *sec;
255 
256+                       f->header.e_shnum++;
257                        f->sections = xrealloc_vector(f->sections, 2, i);
258                        f->sections[i] = sec = arch_new_section();
259-                       f->header.e_shnum = i + 1;
260 
261                        sec->header.sh_type = SHT_PROGBITS;
262                        sec->header.sh_flags = SHF_WRITE | SHF_ALLOC;
263@@ -3006,12 +3006,9 @@
264        for (i = 0; i < f->header.e_shnum; ++i) {
265                struct obj_section *s = f->sections[i];
266                if (s->header.sh_type == SHT_NOBITS) {
267+                       s->contents = NULL;
268                        if (s->header.sh_size != 0)
269-                               s->contents = memset(xmalloc(s->header.sh_size),
270-                                               0, s->header.sh_size);
271-                       else
272-                               s->contents = NULL;
273-
274+                               s->contents = xzalloc(s->header.sh_size);
275                        s->header.sh_type = SHT_PROGBITS;
276                }
277        }
278@@ -3275,14 +3272,13 @@
279                        case SHT_SYMTAB:
280                        case SHT_STRTAB:
281                        case SHT_RELM:
282+                               sec->contents = NULL;
283                                if (sec->header.sh_size > 0) {
284-                                       sec->contents = xmalloc(sec->header.sh_size);
285+                                       sec->contents = xzalloc(sec->header.sh_size);
286                                        fseek(fp, sec->header.sh_offset, SEEK_SET);
287                                        if (fread(sec->contents, sec->header.sh_size, 1, fp) != 1) {
288                                                bb_perror_msg_and_die("error reading ELF section data");
289                                        }
290-                               } else {
291-                                       sec->contents = NULL;
292                                }
293                                break;
294 
[0e9e889]295diff -Naur busybox-1.13.2.orig/testsuite/mdev.tests busybox-1.13.2/testsuite/mdev.tests
296--- busybox-1.13.2.orig/testsuite/mdev.tests    2008-11-09 09:28:19.000000000 -0800
[b36d112]297+++ busybox-1.13.2/testsuite/mdev.tests 2009-02-03 18:52:38.510535828 -0800
[0e9e889]298@@ -111,6 +111,22 @@
299 
300 # continuing to use directory structure from prev test
301 rm -rf mdev.testdir/dev/*
302+echo "sda 0:0 644 =block/ @echo @echo TEST" >mdev.testdir/etc/mdev.conf
303+testing "mdev move and command" \
304+       "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1;
305+       ls -lnR mdev.testdir/dev | $FILTER_LS2" \
306+"\
307+@echo TEST
308+mdev.testdir/dev:
309+drwxr-xr-x 2 0 0 block
310+
311+mdev.testdir/dev/block:
312+brw-r--r-- 1 0 0 sda
313+" \
314+       "" ""
315+
316+# continuing to use directory structure from prev test
317+rm -rf mdev.testdir/dev/*
318 echo "@8,0 :1 644" >mdev.testdir/etc/mdev.conf
319 testing "mdev #maj,min and no explicit uid" \
320        "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1;
321diff -Naur busybox-1.13.2.orig/util-linux/mdev.c busybox-1.13.2/util-linux/mdev.c
322--- busybox-1.13.2.orig/util-linux/mdev.c       2008-11-09 09:28:22.000000000 -0800
[b36d112]323+++ busybox-1.13.2/util-linux/mdev.c    2009-02-03 18:52:38.510535828 -0800
[0e9e889]324@@ -179,8 +179,9 @@
325                        unsigned i, n;
326 #endif
327                        char *a = val;
328-                       s = strchr(val, ' ');
329-                       val = (s && s[1]) ? s+1 : NULL;
330+                       s = strchrnul(val, ' ');
331+                       val = (s[0] && s[1]) ? s+1 : NULL;
332+                       s[0] = '\0';
333 #if ENABLE_FEATURE_MDEV_RENAME_REGEXP
334                        /* substitute %1..9 with off[1..9], if any */
335                        n = 0;
Note: See TracBrowser for help on using the repository browser.