diff options
author | andersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2002-06-06 14:36:07 +0000 |
---|---|---|
committer | andersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2002-06-06 14:36:07 +0000 |
commit | b648c8c348fa6235bac655035c7e58130b539941 (patch) | |
tree | db2099309260e77f0f5aaae697b8fc1c54691c8d /miscutils/makedevs.c | |
parent | abcf9ac7567615ca59e4ff70cc8107599d796105 (diff) | |
download | busybox-w32-b648c8c348fa6235bac655035c7e58130b539941.tar.gz busybox-w32-b648c8c348fa6235bac655035c7e58130b539941.tar.bz2 busybox-w32-b648c8c348fa6235bac655035c7e58130b539941.zip |
Fix buffer overflows noted by Gerardo Puga
-Erik
git-svn-id: svn://busybox.net/trunk/busybox@4872 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'miscutils/makedevs.c')
-rw-r--r-- | miscutils/makedevs.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/miscutils/makedevs.c b/miscutils/makedevs.c index 4e50a6d71..f55995685 100644 --- a/miscutils/makedevs.c +++ b/miscutils/makedevs.c | |||
@@ -52,9 +52,13 @@ int makedevs_main(int argc, char **argv) | |||
52 | 52 | ||
53 | if (type[0] != 'f') | 53 | if (type[0] != 'f') |
54 | dev = (major << 8) | Sminor; | 54 | dev = (major << 8) | Sminor; |
55 | strcpy(devname, basedev); | 55 | safe_strncpy(devname, basedev, sizeof(devname)); |
56 | 56 | ||
57 | if (sbase == 0) { | 57 | if (sbase == 0) { |
58 | int len; | ||
59 | len = strlen(devname); | ||
60 | if (S > 10000 || len > (sizeof(devname)-6)) | ||
61 | error_msg_and_die("%s: number too large", buf); | ||
58 | sprintf(buf, "%d", S); | 62 | sprintf(buf, "%d", S); |
59 | strcat(devname, buf); | 63 | strcat(devname, buf); |
60 | } else { | 64 | } else { |