summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn L McGrath2004-07-23 01:42:28 +0000
committerGlenn L McGrath2004-07-23 01:42:28 +0000
commit9c83e836281e75b9c4be3906d74d62f2f94a94ea (patch)
tree3ff814899b7107ae10b651c8c487ae68c2871294
parenteeb06bf230103440f96e4d42d869f2f3a70d869a (diff)
downloadbusybox-9c83e836281e75b9c4be3906d74d62f2f94a94ea.zip
busybox-9c83e836281e75b9c4be3906d74d62f2f94a94ea.tar.gz
Felipe Kellermann writes,
"As noticed today by Steven Scholz, the od's `-v' was broken. I've fixed that and now both the flags `-v' and `-a' are OK" Fixes a segfault in echo "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\02bar\4"| ./busybox od -av
-rw-r--r--coreutils/od.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/coreutils/od.c b/coreutils/od.c
index b18c53c..6a138e8 100644
--- a/coreutils/od.c
+++ b/coreutils/od.c
@@ -155,13 +155,13 @@ static const char * const add_strings[] = {
"4/4 \" %011o \" \"\\n\"", /* O */
};
-static const signed char od_opts[] = "aBbcDdeFfHhIiLlOovXx";
+static const signed char od_opts[] = "aBbcDdeFfHhIiLlOoXxv";
static const signed char od_o2si[] = {
0, 1, 2, 3, 5,
4, 6, 6, 7, 8,
9, 0xa, 0xb, 0xa, 0xa,
- 0xb, 1, -1, 8, 9,
+ 0xb, 1, 8, 9,
};
int od_main(int argc, char **argv)
@@ -173,7 +173,9 @@ int od_main(int argc, char **argv)
bb_dump_length = -1;
while ((ch = getopt(argc, argv, od_opts)) > 0) {
- if (((p = strchr(od_opts, ch)) != NULL) && (*p >= 0)) {
+ if (ch == 'v') {
+ bb_dump_vflag = ALL;
+ } else if (((p = strchr(od_opts, ch)) != NULL) && (*p >= 0)) {
if (first) {
first = 0;
bb_dump_add("\"%07.7_Ao\n\"");
@@ -182,8 +184,6 @@ int od_main(int argc, char **argv)
bb_dump_add("\" \"");
}
bb_dump_add(add_strings[od_o2si[(int)(p-od_opts)]]);
- } else if (ch == 'v') {
- bb_dump_vflag = ALL;
} else { /* P, p, s, w, or other unhandled */
bb_show_usage();
}