Author: igor Date: Wed Jan 7 10:02:09 2015 New Revision: 3106 Log: update busybox upstream fixes patch
Added: trunk/busybox/busybox-1.23.0-upstream_fixes-2.patch Added: trunk/busybox/busybox-1.23.0-upstream_fixes-2.patch ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/busybox/busybox-1.23.0-upstream_fixes-2.patch Wed Jan 7 10:02:09 2015 (r3106) @@ -0,0 +1,211 @@ +Submitted By: Igor Živković <[email protected]> +Date: 2015-01-07 +Initial Package Version: 1.23.0 +Upstream Status: Already in upstream repo +Origin: Upstream +Description: This patch contains upstream ash, modprobe, and vi + patches. + +diff -Naur busybox-1.23.0.orig/editors/vi.c busybox-1.23.0/editors/vi.c +--- busybox-1.23.0.orig/editors/vi.c 2014-10-04 22:35:58.000000000 +0200 ++++ busybox-1.23.0/editors/vi.c 2015-01-07 18:59:40.429659147 +0100 +@@ -542,9 +542,6 @@ + static int mysleep(int); + static int readit(void); // read (maybe cursor) key from stdin + static int get_one_char(void); // read 1 char from stdin +-#if !ENABLE_FEATURE_VI_READONLY +-#define file_insert(fn, p, update_ro_status) file_insert(fn, p) +-#endif + // file_insert might reallocate text[]! + static int file_insert(const char *, char *, int); + static int file_write(char *, char *, char *); +@@ -1325,7 +1322,7 @@ + q = next_line(q); + { // dance around potentially-reallocated text[] + uintptr_t ofs = q - text; +- size = file_insert(fn, q, /*update_ro:*/ 0); ++ size = file_insert(fn, q, 0); + q = text + ofs; + } + if (size < 0) +@@ -2905,7 +2902,7 @@ + } + + // might reallocate text[]! +-static int file_insert(const char *fn, char *p, int update_ro_status) ++static int file_insert(const char *fn, char *p, int initial) + { + int cnt = -1; + int fd, size; +@@ -2918,7 +2915,8 @@ + + fd = open(fn, O_RDONLY); + if (fd < 0) { +- status_line_bold_errno(fn); ++ if (!initial) ++ status_line_bold_errno(fn); + return cnt; + } + +@@ -2946,7 +2944,7 @@ + close(fd); + + #if ENABLE_FEATURE_VI_READONLY +- if (update_ro_status ++ if (initial + && ((access(fn, W_OK) < 0) || + /* root will always have access() + * so we check fileperms too */ +diff -Naur busybox-1.23.0.orig/modutils/depmod.c busybox-1.23.0/modutils/depmod.c +--- busybox-1.23.0.orig/modutils/depmod.c 2014-10-04 22:35:59.000000000 +0200 ++++ busybox-1.23.0/modutils/depmod.c 2015-01-07 18:59:37.452781322 +0100 +@@ -51,7 +51,11 @@ + + info->dnext = info->dprev = info; + info->name = xstrdup(fname + 2); /* skip "./" */ +- info->modname = xstrdup(filename2modname(fname, modname)); ++ info->modname = xstrdup( ++ filename2modname( ++ bb_get_last_path_component_nostrip(fname), ++ modname ++ )); + for (ptr = image; ptr < image + len - 10; ptr++) { + if (strncmp(ptr, "depends=", 8) == 0) { + char *u; +@@ -242,17 +246,18 @@ + if (!(option_mask32 & OPT_n)) + xfreopen_write("modules.alias", stdout); + for (m = modules; m != NULL; m = m->next) { ++ char modname[MODULE_NAME_LEN]; + const char *fname = bb_basename(m->name); +- int fnlen = strchrnul(fname, '.') - fname; ++ filename2modname(fname, modname); + while (m->aliases) { + /* Last word can well be m->modname instead, + * but depmod from module-init-tools 3.4 + * uses module basename, i.e., no s/-/_/g. + * (pathname and .ko.* are still stripped) + * Mimicking that... */ +- printf("alias %s %.*s\n", ++ printf("alias %s %s\n", + (char*)llist_pop(&m->aliases), +- fnlen, fname); ++ modname); + } + } + #endif +@@ -260,12 +265,13 @@ + if (!(option_mask32 & OPT_n)) + xfreopen_write("modules.symbols", stdout); + for (m = modules; m != NULL; m = m->next) { ++ char modname[MODULE_NAME_LEN]; + const char *fname = bb_basename(m->name); +- int fnlen = strchrnul(fname, '.') - fname; ++ filename2modname(fname, modname); + while (m->symbols) { +- printf("alias symbol:%s %.*s\n", ++ printf("alias symbol:%s %s\n", + (char*)llist_pop(&m->symbols), +- fnlen, fname); ++ modname); + } + } + #endif +diff -Naur busybox-1.23.0.orig/modutils/modprobe.c busybox-1.23.0/modutils/modprobe.c +--- busybox-1.23.0.orig/modutils/modprobe.c 2014-11-26 23:19:35.000000000 +0100 ++++ busybox-1.23.0/modutils/modprobe.c 2015-01-07 18:59:37.458781076 +0100 +@@ -238,17 +238,6 @@ + { + struct module_entry *m; + +- /* +- * get_or_add_modentry() strips path from name and works +- * on remaining basename. +- * This would make "rmmod dir/name" and "modprobe dir/name" +- * to work like "rmmod name" and "modprobe name", +- * which is wrong, and can be abused via implicit modprobing: +- * "ifconfig /usbserial up" tries to modprobe netdev-/usbserial. +- */ +- if (strchr(name, '/')) +- bb_error_msg_and_die("malformed module name '%s'", name); +- + m = get_or_add_modentry(name); + if (!(option_mask32 & (OPT_REMOVE | OPT_SHOW_DEPS)) + && (m->flags & MODULE_FLAG_LOADED) +diff -Naur busybox-1.23.0.orig/modutils/modprobe-small.c busybox-1.23.0/modutils/modprobe-small.c +--- busybox-1.23.0.orig/modutils/modprobe-small.c 2014-10-04 22:35:59.000000000 +0200 ++++ busybox-1.23.0/modutils/modprobe-small.c 2015-01-07 18:59:37.462780912 +0100 +@@ -149,9 +149,13 @@ + static char *filename2modname(const char *filename, char *modname) + { + int i; +- char *from; ++ const char *from; + +- from = bb_get_last_path_component_nostrip(filename); ++ // Disabled since otherwise "modprobe dir/name" would work ++ // as if it is "modprobe name". It is unclear why ++ // 'basenamization' was here in the first place. ++ //from = bb_get_last_path_component_nostrip(filename); ++ from = filename; + for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++) + modname[i] = (from[i] == '-') ? '_' : from[i]; + modname[i] = '\0'; +diff -Naur busybox-1.23.0.orig/modutils/modutils.c busybox-1.23.0/modutils/modutils.c +--- busybox-1.23.0.orig/modutils/modutils.c 2014-10-04 22:35:59.000000000 +0200 ++++ busybox-1.23.0/modutils/modutils.c 2015-01-07 18:59:37.463780870 +0100 +@@ -48,13 +48,17 @@ + char* FAST_FUNC filename2modname(const char *filename, char *modname) + { + int i; +- char *from; ++ const char *from; + + if (filename == NULL) + return NULL; + if (modname == NULL) + modname = xmalloc(MODULE_NAME_LEN); +- from = bb_get_last_path_component_nostrip(filename); ++ // Disabled since otherwise "modprobe dir/name" would work ++ // as if it is "modprobe name". It is unclear why ++ // 'basenamization' was here in the first place. ++ //from = bb_get_last_path_component_nostrip(filename); ++ from = filename; + for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++) + modname[i] = (from[i] == '-') ? '_' : from[i]; + modname[i] = '\0'; +diff -Naur busybox-1.23.0.orig/shell/ash.c busybox-1.23.0/shell/ash.c +--- busybox-1.23.0.orig/shell/ash.c 2014-11-20 01:08:23.000000000 +0100 ++++ busybox-1.23.0/shell/ash.c 2015-01-07 18:59:34.183915659 +0100 +@@ -6746,6 +6746,14 @@ + len = strlen(p); + if (!(subtype == VSPLUS || subtype == VSLENGTH)) + memtodest(p, len, syntax, quotes); ++#if ENABLE_UNICODE_SUPPORT ++ if (subtype == VSLENGTH && len > 0) { ++ reinit_unicode_for_ash(); ++ if (unicode_status == UNICODE_ON) { ++ len = unicode_strlen(p); ++ } ++ } ++#endif + return len; + } + +@@ -6829,15 +6837,7 @@ + varunset(p, var, 0, 0); + + if (subtype == VSLENGTH) { +- ssize_t n = varlen; +- if (n > 0) { +- reinit_unicode_for_ash(); +- if (unicode_status == UNICODE_ON) { +- const char *val = lookupvar(var); +- n = unicode_strlen(val); +- } +- } +- cvtnum(n > 0 ? n : 0); ++ cvtnum(varlen > 0 ? varlen : 0); + goto record; + } + -- http://lists.linuxfromscratch.org/listinfo/patches FAQ: http://www.linuxfromscratch.org/blfs/faq.html Unsubscribe: See the above information page
