Date: Mon, 4 Dec 2000 20:10:58 -0500 From: Will Andrews <will@physics.purdue.edu> To: audit@FreeBSD.org Subject: usr.bin audit patch Message-ID: <20001204201058.W570@puck.firepipe.net>
next in thread | raw e-mail | index | archive | help
--9jxsPFA5p3P2qPhR Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi guys, This is a bit of auditing I did on usr.bin (about half of it anyway). There's probably a lot of false positives here. Sorry for being a lame auditer. Feel free to enlighten me. :-) -- wca --9jxsPFA5p3P2qPhR Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="usrbin.diff" Index: apply/apply.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/apply/apply.c,v retrieving revision 1.10 diff -u -r1.10 apply.c --- apply/apply.c 2000/10/16 08:11:48 1.10 +++ apply/apply.c 2000/12/05 01:00:48 @@ -124,9 +124,9 @@ nargs = 1; p = cmd; - p += sprintf(cmd, "exec %s", argv[0]); + p += snprintf(cmd, sizeof(cmd), "exec %s", argv[0]); for (i = 1; i <= nargs; i++) - p += sprintf(p, " %c%d", magic, i); + p += snprintf(p, sizeof(p), " %c%d", magic, i); /* * If nargs set to the special value 0, eat a single @@ -135,7 +135,7 @@ if (nargs == 0) nargs = 1; } else { - (void)sprintf(cmd, "exec %s", argv[0]); + (void)snprintf(cmd, sizeof(cmd), "exec %s", argv[0]); nargs = n; } @@ -165,7 +165,8 @@ /* Expand command argv references. */ for (p = cmd, q = c; *p != '\0'; ++p) if (p[0] == magic && isdigit(p[1]) && p[1] != '0') - q += sprintf(q, "%s", argv[(++p)[0] - '0']); + q += snprintf(q, sizeof(q), "%s", + argv[(++p)[0] - '0']); else *q++ = *p; Index: ar/misc.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/ar/misc.c,v retrieving revision 1.6 diff -u -r1.6 misc.c --- ar/misc.c 1998/12/06 07:36:44 1.6 +++ ar/misc.c 2000/12/05 01:00:48 @@ -70,9 +70,9 @@ } if (envtmp) - (void)sprintf(path, "%s/%s", envtmp, _NAME_ARTMP); + snprintf(path, sizeof(path), "%s/%s", envtmp, _NAME_ARTMP); else - strcpy(path, _PATH_ARTMP); + strncpy(path, _PATH_ARTMP, sizeof(path)); sigfillset(&set); (void)sigprocmask(SIG_BLOCK, &set, &oset); Index: chat/chat.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/chat/chat.c,v retrieving revision 1.15 diff -u -r1.15 chat.c --- chat/chat.c 1999/11/25 07:28:54 1.15 +++ chat/chat.c 2000/12/05 01:00:48 @@ -951,11 +951,11 @@ c &= 0x7F; if (c < 32) - sprintf(string, "%s^%c", meta, (int)c + '@'); + snprintf(string, sizeof(string), "%s^%c", meta, (int)c + '@'); else if (c == 127) - sprintf(string, "%s^?", meta); + snprintf(string, sizeof(string), "%s^?", meta); else - sprintf(string, "%s%c", meta, c); + snprintf(string, sizeof(string), "%s%c", meta, c); return (string); } Index: chkey/chkey.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/chkey/chkey.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 chkey.c --- chkey/chkey.c 1997/05/28 15:54:04 1.1.1.1 +++ chkey/chkey.c 2000/12/05 01:00:48 @@ -247,7 +247,7 @@ { char pkent[1024]; - (void)sprintf(pkent,"%s:%s", public, secret); + (void)snprintf(pkent, sizeof(pkent), "%s:%s", public, secret); #ifdef YP return (yp_update(domain, PKMAP, YPOP_STORE, name, strlen(name), pkent, strlen(pkent))); @@ -268,7 +268,7 @@ static struct passwd pw; char *p; - (void)sprintf(uidstr, "%d", uid); + snprintf(uidstr, sizeof(uidstr), "%d", uid); if (yp_match(domain, "passwd.byuid", uidstr, strlen(uidstr), &val, &vallen) != 0) { return (NULL); Index: chpass/edit.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/chpass/edit.c,v retrieving revision 1.18 diff -u -r1.18 edit.c --- chpass/edit.c 2000/09/06 18:16:46 1.18 +++ chpass/edit.c 2000/12/05 01:00:48 @@ -247,9 +247,9 @@ strlen(list[E_OTHER].save) + 5; if (!(p = malloc(len))) err(1, NULL); - (void)sprintf(pw->pw_gecos = p, "%s,%s,%s,%s,%s", list[E_NAME].save, - list[E_LOCATE].save, list[E_BPHONE].save, list[E_HPHONE].save, - list[E_OTHER].save); + (void)snprintf(pw->pw_gecos = p, sizeof(p), "%s,%s,%s,%s,%s", + list[E_NAME].save, list[E_LOCATE].save, list[E_BPHONE].save, + list[E_HPHONE].save, list[E_OTHER].save); while ((len = strlen(pw->pw_gecos)) && pw->pw_gecos[len - 1] == ',') pw->pw_gecos[len - 1] = '\0'; Index: doscmd/ParseBuffer.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/doscmd/ParseBuffer.c,v retrieving revision 1.2 diff -u -r1.2 ParseBuffer.c --- doscmd/ParseBuffer.c 1999/08/28 01:00:03 1.2 +++ doscmd/ParseBuffer.c 2000/12/05 01:00:48 @@ -58,7 +58,7 @@ _buf = malloc(buflen); } buf = _buf; - strcpy(buf, obuf); + strncpy(buf, obuf, sizeof(buf)); a = av; e = &av[mac]; Index: doscmd/debug.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/doscmd/debug.c,v retrieving revision 1.3 diff -u -r1.3 debug.c --- doscmd/debug.c 1999/09/29 20:09:17 1.3 +++ doscmd/debug.c 2000/12/05 01:00:48 @@ -112,7 +112,7 @@ va_start (args, fmt); vfprintf (debugf, fmt, args); - vsprintf (buf, fmt, args); + vsnprintf (buf, sizeof(buf), fmt, args); va_end (args); tty_move(23, 0); Index: doscmd/doscmd.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/doscmd/doscmd.c,v retrieving revision 1.14 diff -u -r1.14 doscmd.c --- doscmd/doscmd.c 2000/06/23 08:57:17 1.14 +++ doscmd/doscmd.c 2000/12/05 01:00:48 @@ -707,7 +707,7 @@ fd = open_name(fullname, ext); - strcpy(cmdname, name); + strncpy(cmdname, name, sizeof(cmdname)); if (*ext) strcat(cmdname, ext); return (fd); Index: doscmd/exe.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/doscmd/exe.c,v retrieving revision 1.2 diff -u -r1.2 exe.c --- doscmd/exe.c 1999/08/28 01:00:15 1.2 +++ doscmd/exe.c 2000/12/05 01:00:48 @@ -84,13 +84,13 @@ if (total + len >= 32 * 1024) break; total += len + 1; - strcpy (p, env[i]); + strncpy (p, env[i], sizeof(p)); p += strlen (p) + 1; } *p++ = 0; *(short *)p = strlen(cmdname); p += 2; - strcpy (p, cmdname); + strncpy (p, cmdname, sizeof(p)); while(*p) { if (*p == '/') *p = '\\'; Index: doscmd/i386-pinsn.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/doscmd/i386-pinsn.c,v retrieving revision 1.1 diff -u -r1.1 i386-pinsn.c --- doscmd/i386-pinsn.c 1997/08/09 01:42:43 1.1 +++ doscmd/i386-pinsn.c 2000/12/05 01:00:48 @@ -957,7 +957,7 @@ { /* fwait not followed by floating point instruction */ oappend ("fwait"); - strcpy (outbuf, obuf); + strncpy (outbuf, obuf, sizeof(outbuf)); return (1); } @@ -1053,7 +1053,7 @@ oappend (","); oappend (third); } - strcpy (outbuf, obuf); + strncpy (outbuf, obuf, sizeof(outbuf)); return (codep - inbuf); } @@ -1332,7 +1332,7 @@ /* ARGSUSED */ OP_STi (ignore) { - sprintf (scratchbuf, "%%st(%d)", rm); + snprintf (scratchbuf, sizeof(scratchbuf), "%%st(%d)", rm); oappend (scratchbuf); } @@ -1373,7 +1373,7 @@ oappend (s) char *s; { - strcpy (obufp, s); + strncpy (obufp, s, sizeof(obufp)); obufp += strlen (s); *obufp = 0; } @@ -1499,7 +1499,7 @@ if (mod != 0 || (aflag && rm == 5 || (havesib && base == 5)) || (!aflag && rm == 6)) { - sprintf (scratchbuf, "0x%x", disp); + snprintf (scratchbuf, sizeof(scratchbuf), "0x%x", disp); oappend (scratchbuf); } @@ -1509,10 +1509,10 @@ oappend (aflag ? names32[base] : names16_pairs[base]); if (havesib) { if (index != 4) { - sprintf (scratchbuf, ",%s", names32[index]); + snprintf (scratchbuf, sizeof(scratchbuf), ",%s", names32[index]); oappend (scratchbuf); } - sprintf (scratchbuf, ",%d", 1 << scale); + snprintf (scratchbuf, sizeof(scratchbuf), ",%d", 1 << scale); oappend (scratchbuf); } oappend (")"); @@ -1619,7 +1619,7 @@ oappend ("<internal disassembler error>"); return; } - sprintf (scratchbuf, "$0x%x", op); + snprintf (scratchbuf, sizeof(scratchbuf), "$0x%x", op); oappend (scratchbuf); } @@ -1645,7 +1645,7 @@ oappend ("<internal disassembler error>"); return; } - sprintf (scratchbuf, "$0x%x", op); + snprintf (scratchbuf, sizeof(scratchbuf), "$0x%x", op); oappend (scratchbuf); } @@ -1679,7 +1679,7 @@ append_pc(unsigned long pc) { - sprintf(scratchbuf, "%04x:%04x", pc >> 16, pc & 0xffff); + snprintf(scratchbuf, sizeof(scratchbuf), "%04x:%04x", pc >> 16, pc & 0xffff); } /* ARGSUSED */ @@ -1709,7 +1709,7 @@ offset = get16 (); seg = get16 (); } - sprintf (scratchbuf, "%04x:%04x", seg, offset); + snprintf (scratchbuf, sizeof(scratchbuf), "%04x:%04x", seg, offset); oappend (scratchbuf); break; case v_mode: @@ -1737,7 +1737,7 @@ else off = get16 (); - sprintf (scratchbuf, "0x%x", off); + snprintf (scratchbuf, sizeof(scratchbuf), "0x%x", off); oappend (scratchbuf); } @@ -1767,7 +1767,7 @@ OP_C (dummy) { codep++; /* skip mod/rm */ - sprintf (scratchbuf, "%%cr%d", reg); + snprintf (scratchbuf, sizeof(scratchbuf), "%%cr%d", reg); oappend (scratchbuf); } @@ -1775,7 +1775,7 @@ OP_D (dummy) { codep++; /* skip mod/rm */ - sprintf (scratchbuf, "%%db%d", reg); + snprintf (scratchbuf, sizeof(scratchbuf), "%%db%d", reg); oappend (scratchbuf); } @@ -1783,7 +1783,7 @@ OP_T (dummy) { codep++; /* skip mod/rm */ - sprintf (scratchbuf, "%%tr%d", reg); + snprintf (scratchbuf, sizeof(scratchbuf), "%%tr%d", reg); oappend (scratchbuf); } Index: doscmd/int17.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/doscmd/int17.c,v retrieving revision 1.4 diff -u -r1.4 int17.c --- doscmd/int17.c 1999/08/28 01:00:17 1.4 +++ doscmd/int17.c 2000/12/05 01:00:48 @@ -138,7 +138,7 @@ return; } } else { - sprintf(printer_name, "/dev/lpt%d", printer); + snprintf(printer_name, sizeof(printer_name), "/dev/lpt%d", printer); debug(D_PRINTER, "Opening device %s\n", printer_name); if ((fd = open(printer_name, O_WRONLY)) < 0) { perror(printer_name); Index: ee/ee.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/ee/ee.c,v retrieving revision 1.19 diff -u -r1.19 ee.c --- ee/ee.c 2000/08/21 10:21:28 1.19 +++ ee/ee.c 2000/12/05 01:00:49 @@ -931,7 +931,7 @@ string = "^?"; else if (!eightbit) { - sprintf(string2, "<%d>", (character < 0) ? (character + 256) : character); + snprintf(string2, sizeof(string2), "<%d>", (character < 0) ? (character + 256) : character); string = string2; } else @@ -1585,7 +1585,7 @@ { char buffer[256]; - sprintf(buffer, ">!%s", print_command); + snprintf(buffer, sizeof(buffer), ">!%s", print_command); wmove(com_win, 0, 0); wclrtoeol(com_win); wprintw(com_win, printer_msg_str, print_command); @@ -4133,7 +4133,7 @@ if (stat(file_name, &buf) != -1) { - sprintf(buffer, "%s.old", file_name); + snprintf(buffer, sizeof(buffer), "%s.old", file_name); unlink(buffer); link(file_name, buffer); unlink(file_name); @@ -4278,10 +4278,10 @@ return; } pid = getpid(); - sprintf(name, "/tmp/ee.%d", pid); + snprintf(name, sizeof(name), "/tmp/ee.%d", pid); if (write_file(name)) { - sprintf(string, "ispell %s", name); + snprintf(string, sizeof(string), "ispell %s", name); sh_command(string); delete_text(); tmp_file = name; @@ -4590,21 +4590,29 @@ do { - sprintf(modes_menu[1].item_string, "%s %s", mode_strings[1], + snprintf(modes_menu[1].item_string, + sizeof(modes_menu[1].item_string), "%s %s", mode_strings[1], (expand_tabs ? ON : OFF)); - sprintf(modes_menu[2].item_string, "%s %s", mode_strings[2], + snprintf(modes_menu[2].item_string, + sizeof(modes_menu[2].item_string), "%s %s", mode_strings[2], (case_sen ? ON : OFF)); - sprintf(modes_menu[3].item_string, "%s %s", mode_strings[3], + snprintf(modes_menu[3].item_string, + sizeof(modes_menu[3].item_string), "%s %s", mode_strings[3], (observ_margins ? ON : OFF)); - sprintf(modes_menu[4].item_string, "%s %s", mode_strings[4], + snprintf(modes_menu[4].item_string, + sizeof(modes_menu[4].item_string), "%s %s", mode_strings[4], (auto_format ? ON : OFF)); - sprintf(modes_menu[5].item_string, "%s %s", mode_strings[5], + snprintf(modes_menu[5].item_string, + sizeof(modes_menu[5].item_string), "%s %s", mode_strings[5], (eightbit ? ON : OFF)); - sprintf(modes_menu[6].item_string, "%s %s", mode_strings[6], + snprintf(modes_menu[6].item_string, + sizeof(modes_menu[6].item_string), "%s %s", mode_strings[6], (info_window ? ON : OFF)); - sprintf(modes_menu[7].item_string, "%s %s", mode_strings[7], + snprintf(modes_menu[7].item_string, + sizeof(modes_menu[7].item_string), "%s %s", mode_strings[7], (emacs_keys_mode ? ON : OFF)); - sprintf(modes_menu[8].item_string, "%s %d", mode_strings[8], + snprintf(modes_menu[8].item_string, + sizeof(modes_menu[8].item_string), "%s %d", mode_strings[8], right_margin); ret_value = menu_op(modes_menu); @@ -4719,7 +4727,7 @@ return(name); } buffer = malloc(strlen(user->pw_dir) + strlen(slash) + 1); - strcpy(buffer, user->pw_dir); + strncpy(buffer, user->pw_dir, sizeof(buffer)); strcat(buffer, slash); } else Index: ee/new_curse.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/ee/new_curse.c,v retrieving revision 1.4 diff -u -r1.4 new_curse.c --- ee/new_curse.c 1999/09/06 07:33:51 1.4 +++ ee/new_curse.c 2000/12/05 01:00:49 @@ -794,7 +794,8 @@ { Data_Line_len = 23 + strlen(TERM_PATH) + strlen(TERMINAL_TYPE); Term_File_name = malloc(Data_Line_len); - sprintf(Term_File_name, "%s/%c/%s", TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE); + snprintf(Term_File_name, sizeof(Term_File_name), "%s/%c/%s", + TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE); Fildes = open(Term_File_name, O_RDONLY); } if (Fildes == -1) @@ -802,7 +803,8 @@ TERM_PATH = "/usr/lib/terminfo"; Data_Line_len = 23 + strlen(TERM_PATH) + strlen(TERMINAL_TYPE); Term_File_name = malloc(Data_Line_len); - sprintf(Term_File_name, "%s/%c/%s", TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE); + snprintf(Term_File_name, sizeof(Term_File_name), "%s/%c/%s", + TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE); Fildes = open(Term_File_name, O_RDONLY); } if (Fildes == -1) @@ -810,7 +812,8 @@ TERM_PATH = "/usr/share/lib/terminfo"; Data_Line_len = 23 + strlen(TERM_PATH) + strlen(TERMINAL_TYPE); Term_File_name = malloc(Data_Line_len); - sprintf(Term_File_name, "%s/%c/%s", TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE); + snprintf(Term_File_name, sizeof(Term_File_name), "%s/%c/%s", + TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE); Fildes = open(Term_File_name, O_RDONLY); } if (Fildes == -1) @@ -1095,7 +1098,7 @@ Spoint->element = (struct KEYS *) malloc(sizeof(struct KEYS)); Spoint->element->length = strlen(String_table[key_def]); Spoint->element->string = malloc(Spoint->element->length + 1); - strcpy(Spoint->element->string, String_table[key_def]); + strncpy(Spoint->element->string, String_table[key_def], sizeof(Spoint->element->string)); Spoint->element->value = Key_vals[Counter]; Klen = strlen(Spoint->element->string); if (Klen > Max_Key_len) @@ -1223,7 +1226,7 @@ char *Ftemp; Ftemp = Name = malloc(strlen(TERMINAL_TYPE + 1) + 1); - strcpy(Name, TERMINAL_TYPE); + strncpy(Name, TERMINAL_TYPE, sizeof(Name)); while (*Ftemp != (char)NULL) Ftemp++; *Ftemp++ = '|'; Index: hexdump/conv.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/hexdump/conv.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 conv.c --- hexdump/conv.c 1994/05/27 12:31:41 1.1.1.1 +++ hexdump/conv.c 2000/12/05 01:00:49 @@ -86,7 +86,8 @@ *pr->cchar = 'c'; (void)printf(pr->fmt, *p); } else { - (void)sprintf(str = buf, "%03o", (int)*p); + str = buf; + snprintf(str, sizeof(str), "%03o", (int)*p); strpr: *pr->cchar = 's'; (void)printf(pr->fmt, str); } Index: indent/args.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/indent/args.c,v retrieving revision 1.3 diff -u -r1.3 args.c --- indent/args.c 1999/08/28 01:02:10 1.3 +++ indent/args.c 2000/12/05 01:00:49 @@ -162,7 +162,7 @@ char fname[BUFSIZ]; static char prof[] = ".indent.pro"; - sprintf(fname, "%s/%s", getenv("HOME"), prof); + snprintf(fname, sizeof(fname), "%s/%s", getenv("HOME"), prof); if ((f = fopen(option_source = fname, "r")) != NULL) { scan_profile(f); (void) fclose(f); Index: indent/indent.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/indent/indent.c,v retrieving revision 1.6 diff -u -r1.6 indent.c --- indent/indent.c 2000/07/10 09:09:52 1.6 +++ indent/indent.c 2000/12/05 01:00:49 @@ -497,7 +497,7 @@ if (ps.in_decl && !ps.block_init) if (troff && !ps.dumped_decl_indent && !is_procname && ps.last_token == decl) { ps.dumped_decl_indent = 1; - sprintf(e_code, "\n.Du %dp+\200p \"%s\"\n", dec_ind * 7, token); + snprintf(e_code, sizeof(e_code), "\n.Du %dp+\200p \"%s\"\n", dec_ind * 7, token); e_code += strlen(e_code); } else { @@ -567,7 +567,7 @@ *e_code++ = ' '; if (troff && !ps.dumped_decl_indent && ps.in_decl && !is_procname) { - sprintf(e_code, "\n.Du %dp+\200p \"%s\"\n", dec_ind * 7, token); + snprintf(e_code, sizeof(e_code), "\n.Du %dp+\200p \"%s\"\n", dec_ind * 7, token); ps.dumped_decl_indent = 1; e_code += strlen(e_code); } @@ -909,7 +909,7 @@ if (is_procname == 0 || !procnames_start_line) { if (!ps.block_init) if (troff && !ps.dumped_decl_indent) { - sprintf(e_code, "\n.De %dp+\200p\n", dec_ind * 7); + snprintf(e_code, sizeof(e_code), "\n.De %dp+\200p\n", dec_ind * 7); ps.dumped_decl_indent = 1; e_code += strlen(e_code); } @@ -1155,7 +1155,7 @@ p--; if (*p == '/') p++; - sprintf(bakfile, "%s.BAK", p); + snprintf(bakfile, sizeof(bakfile), "%s.BAK", p); /* copy in_name to backup file */ bakchn = creat(bakfile, 0600); Index: jot/jot.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/jot/jot.c,v retrieving revision 1.14 diff -u -r1.14 jot.c --- jot/jot.c 2000/07/10 05:57:29 1.14 +++ jot/jot.c 2000/12/05 01:00:49 @@ -140,11 +140,11 @@ boring = 1; case 'w': if ((*av)[2]) - strcpy(format, *av + 2); + strncpy(format, *av + 2, sizeof(format)); else if (!--ac) errx(1, "need context word after -w or -b"); else - strcpy(format, *++av); + strncpy(format, *++av, sizeof(format)); break; case 's': if ((*av)[2]) @@ -385,9 +385,9 @@ if (*p == '%' && *(p+1) != '%') /* leave %% alone */ break; if (!*p && !chardata) - sprintf(p, "%%.%df", prec); + snprintf(p, sizeof(p), "%%.%df", prec); else if (!*p && chardata) { - strcpy(p, "%c"); + strncpy(p, "%c", sizeof(p)); intdata = 1; } else if (!*(p+1)) strcat(format, "%"); /* cannot end in single '%' */ Index: lam/lam.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/lam/lam.c,v retrieving revision 1.4 diff -u -r1.4 lam.c --- lam/lam.c 2000/07/10 09:14:15 1.4 +++ lam/lam.c 2000/12/05 01:00:49 @@ -155,7 +155,7 @@ fmtp += strlen(fmtp) + 1; if (fmtp > fmtbuf + BUFSIZ) errx(1, "no more format space"); - sprintf(fmtp, "%%%ss", p); + snprintf(fmtp, sizeof(fmtp), "%%%ss", p); ip->format = fmtp; } else @@ -181,7 +181,7 @@ while (*p) *lp++ = *p++; if (ip->pad) { - sprintf(lp, ip->format, ""); + snprintf(lp, sizeof(lp), ip->format, ""); lp += strlen(lp); } return (lp); @@ -213,7 +213,7 @@ p = ip->sepstring; while (*p) *lp++ = *p++; - sprintf(lp, ip->format, s); + snprintf(lp, sizeof(lp), ip->format, s); lp += strlen(lp); return (lp); } Index: limits/limits.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/limits/limits.c,v retrieving revision 1.8 diff -u -r1.8 limits.c --- limits/limits.c 2000/03/26 14:37:47 1.8 +++ limits/limits.c 2000/12/05 01:00:49 @@ -320,11 +320,11 @@ rlim_t val; /* current value overridden by resourcename or resourcename-cur */ - sprintf(str, "%s-cur", resources[rcswhich].cap); + snprintf(str, sizeof(str), "%s-cur", resources[rcswhich].cap); val = resources[rcswhich].func(lc, resources[rcswhich].cap, limits[rcswhich].rlim_cur, limits[rcswhich].rlim_cur); limits[rcswhich].rlim_cur = resources[rcswhich].func(lc, str, val, val); /* maximum value overridden by resourcename or resourcename-max */ - sprintf(str, "%s-max", resources[rcswhich].cap); + snprintf(str, sizeof(str), "%s-max", resources[rcswhich].cap); val = resources[rcswhich].func(lc, resources[rcswhich].cap, limits[rcswhich].rlim_max, limits[rcswhich].rlim_max); limits[rcswhich].rlim_max = resources[rcswhich].func(lc, str, val, val); } @@ -466,9 +466,9 @@ char numbr[64]; if (limit == RLIM_INFINITY) - strcpy(numbr, inf); + strncpy(numbr, inf, sizeof(numbr)); else - sprintf(numbr, "%qd", (quad_t)((limit + divisor/2) / divisor)); + snprintf(numbr, sizeof(numbr), "%qd", (quad_t)((limit + divisor/2) / divisor)); printf(pfx, which, numbr); printf(sfx, which); @@ -614,18 +614,18 @@ FILE * fp; struct stat st; char procdir[MAXPATHLEN], buf[128]; - int l = sprintf(procdir, "/proc/%ld/", (long)ppid); + int l = snprintf(procdir, sizeof(procdir), "/proc/%ld/", (long)ppid); char * shell = getenv("SHELL"); if (shell != NULL && stat(shell, &st) != -1) { struct stat st1; - strcpy(procdir+l, "file"); + strncpy(procdir+l, "file", sizeof(procdir+l)); /* $SHELL is actual shell? */ if (stat(procdir, &st1) != -1 && memcmp(&st, &st1, sizeof st) == 0) return getshellbyname(shell); } - strcpy(procdir+l, "status"); + strncpy(procdir+l, "status", sizeof(procdir+l)); if (stat(procdir, &st) == 0 && (fp = fopen(procdir, "r")) != NULL) { char * p = fgets(buf, sizeof buf, fp)==NULL ? NULL : strtok(buf, " \t"); fclose(fp); Index: mail/cmd1.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/mail/cmd1.c,v retrieving revision 1.3 diff -u -r1.3 cmd1.c --- mail/cmd1.c 1998/07/06 21:01:17 1.3 +++ mail/cmd1.c 2000/12/05 01:00:49 @@ -194,7 +194,7 @@ if (mp->m_flag & MBOX) dispc = 'M'; parse(headline, &hl, pbuf); - sprintf(wcount, "%3ld/%-5ld", mp->m_lines, mp->m_size); + snprintf(wcount, sizeof(wcount), "%3ld/%-5ld", mp->m_lines, mp->m_size); subjlen = screenwidth - 50 - strlen(wcount); name = value("show-rcpt") != NOSTR ? skin(hfield("to", mp)) : nameof(mp, 0); Index: mail/fio.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/mail/fio.c,v retrieving revision 1.3 diff -u -r1.3 fio.c --- mail/fio.c 2000/10/24 13:54:31 1.3 +++ mail/fio.c 2000/12/05 01:00:49 @@ -69,7 +69,7 @@ char linebuf[LINESIZE]; /* Get temporary file. */ - (void)sprintf(linebuf, "%s/mail.XXXXXX", tmpdir); + snprintf(linebuf, sizeof(linebuf), "%s/mail.XXXXXX", tmpdir); if ((c = mkstemp(linebuf)) == -1 || (mestmp = Fdopen(c, "r+")) == NULL) { errx(1, "can't open %s", linebuf); @@ -341,12 +341,12 @@ /* fall through */ } if (name[0] == '+' && getfold(cmdbuf) >= 0) { - sprintf(xname, "%s/%s", cmdbuf, name + 1); + snprintf(xname, sizeof(xname), "%s/%s", cmdbuf, name + 1); name = savestr(xname); } /* catch the most common shell meta character */ if (name[0] == '~' && (name[1] == '/' || name[1] == '\0')) { - sprintf(xname, "%s%s", homedir, name + 1); + snprintf(xname, sizeof(xname),"%s%s", homedir, name + 1); name = savestr(xname); } if (!anyof(name, "~{[*?$`'\"\\")) @@ -355,7 +355,7 @@ perror("pipe"); return name; } - sprintf(cmdbuf, "echo %s", name); + snprintf(cmdbuf, sizeof(cmdbuf), "echo %s", name); if ((shell = value("SHELL")) == NOSTR) shell = _PATH_CSHELL; pid = start_command(shell, 0, -1, pivec[1], "-c", cmdbuf, NOSTR); @@ -406,9 +406,9 @@ if ((folder = value("folder")) == NOSTR) return (-1); if (*folder == '/') - strcpy(name, folder); + strncpy(name, folder, sizeof(name)); else - sprintf(name, "%s/%s", homedir, folder); + snprintf(name, sizeof(name), "%s/%s", homedir, folder); return (0); } @@ -425,7 +425,7 @@ else if (*cp != '/') { char buf[PATHSIZE]; - (void) sprintf(buf, "~/%s", cp); + snprintf(buf, sizeof(buf), "~/%s", cp); cp = expand(buf); } return cp; Index: mail/lex.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/mail/lex.c,v retrieving revision 1.8 diff -u -r1.8 lex.c --- mail/lex.c 2000/11/27 07:32:29 1.8 +++ mail/lex.c 2000/12/05 01:00:49 @@ -128,9 +128,9 @@ } shudclob = 1; edit = isedit; - strcpy(prevfile, mailname); + strncpy(prevfile, mailname, sizeof(prevfile)); if (name != mailname) - strcpy(mailname, name); + strncpy(mailname, name, sizeof(mailname)); mailsize = fsize(ibuf); if ((otf = fopen(tempMesg, "w")) == NULL) { perror(tempMesg); @@ -616,7 +616,7 @@ if (getfold(fname) >= 0) { strcat(fname, "/"); if (strncmp(fname, mailname, strlen(fname)) == 0) { - sprintf(zname, "+%s", mailname + strlen(fname)); + snprintf(zname, sizeof(zname), "+%s", mailname + strlen(fname)); ename = zname; } } Index: mail/v7.local.c =================================================================== RCS file: /cvs/FreeBSD/src/usr.bin/mail/v7.local.c,v retrieving revision 1.2 diff -u -r1.2 v7.local.c --- mail/v7.local.c 1996/10/06 01:55:32 1.2 +++ mail/v7.local.c 2000/12/05 01:00:49 @@ -58,9 +58,9 @@ char *tmp = getenv("MAIL"); if (tmp == NULL) - (void)sprintf(buf, "%s/%s", _PATH_MAILDIR, user); + snprintf(buf, sizeof(buf), "%s/%s", _PATH_MAILDIR, user); else - (void)strcpy(buf, tmp); + strncpy(buf, tmp, sizeof(buf)); } /* --9jxsPFA5p3P2qPhR-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-audit" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001204201058.W570>