Module Name: src Committed By: christos Date: Tue Mar 25 18:35:33 UTC 2014
Modified Files: src/sys/arch/ia64/disasm: disasm_format.c src/sys/arch/ia64/stand/common: boot.c bootstrap.h commands.c dev_net.c fileload.c interp.c ls.c misc.c src/sys/arch/ia64/stand/efi/libefi: devicename.c efifs.c src/sys/arch/ia64/stand/ia64/efi: main.c src/sys/arch/ia64/stand/ia64/ski: devicename.c Log Message: kill sprintf To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/ia64/disasm/disasm_format.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/ia64/stand/common/boot.c \ src/sys/arch/ia64/stand/common/interp.c cvs rdiff -u -r1.8 -r1.9 src/sys/arch/ia64/stand/common/bootstrap.h \ src/sys/arch/ia64/stand/common/dev_net.c cvs rdiff -u -r1.3 -r1.4 src/sys/arch/ia64/stand/common/commands.c \ src/sys/arch/ia64/stand/common/ls.c cvs rdiff -u -r1.4 -r1.5 src/sys/arch/ia64/stand/common/fileload.c cvs rdiff -u -r1.6 -r1.7 src/sys/arch/ia64/stand/common/misc.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/ia64/stand/efi/libefi/devicename.c \ src/sys/arch/ia64/stand/efi/libefi/efifs.c cvs rdiff -u -r1.8 -r1.9 src/sys/arch/ia64/stand/ia64/efi/main.c cvs rdiff -u -r1.4 -r1.5 src/sys/arch/ia64/stand/ia64/ski/devicename.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/ia64/disasm/disasm_format.c diff -u src/sys/arch/ia64/disasm/disasm_format.c:1.1 src/sys/arch/ia64/disasm/disasm_format.c:1.2 --- src/sys/arch/ia64/disasm/disasm_format.c:1.1 Fri Apr 7 10:21:18 2006 +++ src/sys/arch/ia64/disasm/disasm_format.c Tue Mar 25 14:35:32 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: disasm_format.c,v 1.1 2006/04/07 14:21:18 cherry Exp $ */ +/* $NetBSD: disasm_format.c,v 1.2 2014/03/25 18:35:32 christos Exp $ */ /*- * Copyright (c) 2000-2003 Marcel Moolenaar @@ -111,21 +111,23 @@ static const char *asm_completers[] = { }; void -asm_completer(const struct asm_cmpltr *c, char *buf) +asm_completer(const struct asm_cmpltr *c, char *buf, size_t buflen) { - strcpy(buf, asm_completers[c->c_type]); + strlcpy(buf, asm_completers[c->c_type], buflen); } void -asm_mnemonic(enum asm_op op, char *buf) +asm_mnemonic(enum asm_op op, char *buf, size_t buflen) { - strcpy(buf, asm_mnemonics[(op < ASM_OP_INTERNAL_OPCODES) ? op : 0]); + strlcpy(buf, asm_mnemonics[(op < ASM_OP_INTERNAL_OPCODES) ? op : 0], + buflen); } void -asm_operand(const struct asm_oper *o, char *buf, uint64_t ip) +asm_operand(const struct asm_oper *o, char *buf, size_t buflen, uint64_t ip) { const char *n; + size_t l; n = ""; switch (o->o_type) { @@ -159,16 +161,16 @@ asm_operand(const struct asm_oper *o, ch case AR_LC: n = "lc"; break; case AR_EC: n = "ec"; break; default: - sprintf(buf, "ar%d", (int)o->o_value); + snprintf(buf, buflen, "ar%d", (int)o->o_value); return; } - sprintf(buf, "ar.%s", n); + snprintf(buf, buflen, "ar.%s", n); return; case ASM_OPER_BREG: if (o->o_value != 0) - sprintf(buf, "b%d", (int)o->o_value); + snprintf(buf, buflen, "b%d", (int)o->o_value); else - strcpy(buf, "rp"); + strlcpy(buf, "rp", buflen); return; case ASM_OPER_CPUID: n = "cpuid"; @@ -202,22 +204,22 @@ asm_operand(const struct asm_oper *o, ch case CR_LRR0: n = "lrr0"; break; case CR_LRR1: n = "lrr1"; break; default: - sprintf(buf, "cr%d", (int)o->o_value); + snprintf(buf, buflen, "cr%d", (int)o->o_value); return; } - sprintf(buf, "cr.%s", n); + snprintf(buf, buflen, "cr.%s", n); return; case ASM_OPER_DBR: n = "dbr"; break; case ASM_OPER_DISP: - sprintf(buf, "%lx", ip + o->o_value); + snprintf(buf, buflen, "%lx", ip + o->o_value); return; case ASM_OPER_DTR: n = "dtr"; break; case ASM_OPER_FREG: - sprintf(buf, "f%d", (int)o->o_value); + snprintf(buf, buflen, "f%d", (int)o->o_value); return; case ASM_OPER_GREG: break; @@ -225,10 +227,10 @@ asm_operand(const struct asm_oper *o, ch n = "ibr"; break; case ASM_OPER_IMM: - sprintf(buf, "0x%lx", o->o_value); + snprintf(buf, buflen, "0x%lx", o->o_value); return; case ASM_OPER_IP: - strcpy(buf, "ip"); + strlcpy(buf, "ip", buflen); return; case ASM_OPER_ITR: n = "itr"; @@ -249,22 +251,22 @@ asm_operand(const struct asm_oper *o, ch n = "pmd"; break; case ASM_OPER_PR: - strcpy(buf, "pr"); + strlcpy(buf, "pr", buflen); return; case ASM_OPER_PR_ROT: - strcpy(buf, "pr.rot"); + strlcpy(buf, "pr.rot", buflen); return; case ASM_OPER_PREG: - sprintf(buf, "p%d", (int)o->o_value); + snprintf(buf, buflen, "p%d", (int)o->o_value); return; case ASM_OPER_PSR: - strcpy(buf, "psr"); + strlcpy(buf, "psr", buflen); return; case ASM_OPER_PSR_L: - strcpy(buf, "psr.l"); + strlcpy(buf, "psr.l", buflen); return; case ASM_OPER_PSR_UM: - strcpy(buf, "psr.um"); + strlcpy(buf, "psr.um", buflen); return; case ASM_OPER_RR: n = "rr"; @@ -273,16 +275,21 @@ asm_operand(const struct asm_oper *o, ch KASSERT(0); break; } - if (n[0] != '\0') - buf += sprintf(buf, "%s[", n); + if (n[0] != '\0') { + l = snprintf(buf, buflen, "%s[", n); + buf += l; + buflen -= l; + } switch ((int)o->o_value) { - case 1: strcpy(buf, "gp"); buf += 2; break; - case 12: strcpy(buf, "sp"); buf += 2; break; - case 13: strcpy(buf, "tp"); buf += 2; break; - default: buf += sprintf(buf, "r%d", (int)o->o_value); break; + case 1: l = strlcpy(buf, "gp", buflen); break; + case 12: l = strlcpy(buf, "sp", buflen); break; + case 13: l = strlcpy(buf, "tp", buflen); break; + default: l += snprintf(buf, buflen, "r%d", (int)o->o_value); break; } + buf += l; + buflen -= l; if (n[0] != '\0') - strcpy(buf, "]"); + strlcpy(buf, "]", buflen); } void @@ -313,7 +320,7 @@ asm_print_inst(const struct asm_bundle * /* Predicate. */ if (i->i_oper[0].o_value != 0) { - asm_operand(i->i_oper+0, buf, ip); + asm_operand(i->i_oper+0, buf, sizeof(buf), ip); printf("(%s)", buf); w = strlen(buf); } else @@ -322,12 +329,12 @@ asm_print_inst(const struct asm_bundle * printf(" "); /* Mnemonic & completers. */ - asm_mnemonic(i->i_op, buf); - printf(buf); + asm_mnemonic(i->i_op, buf, sizeof(buf)); + printf("%s", buf); w = strlen(buf); n = 0; while (n < i->i_ncmpltrs) { - asm_completer(i->i_cmpltr + n, buf); + asm_completer(i->i_cmpltr + n, buf, sizeof(buf)); printf(buf); w += strlen(buf); n++; @@ -345,8 +352,8 @@ asm_print_inst(const struct asm_bundle * else printf(", "); } - asm_operand(i->i_oper + n, buf, ip); - printf(buf); + asm_operand(i->i_oper + n, buf, sizeof(buf), ip); + printf("%s", buf); n++; } printf("\n"); Index: src/sys/arch/ia64/stand/common/boot.c diff -u src/sys/arch/ia64/stand/common/boot.c:1.5 src/sys/arch/ia64/stand/common/boot.c:1.6 --- src/sys/arch/ia64/stand/common/boot.c:1.5 Mon Jul 20 00:59:03 2009 +++ src/sys/arch/ia64/stand/common/boot.c Tue Mar 25 14:35:32 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: boot.c,v 1.5 2009/07/20 04:59:03 kiyohara Exp $ */ +/* $NetBSD: boot.c,v 1.6 2014/03/25 18:35:32 christos Exp $ */ /*- * Copyright (c) 1998 Michael Smith <msm...@freebsd.org> @@ -64,7 +64,8 @@ command_boot(int argc, char *argv[]) /* XXX maybe we should discard everything and start again? */ if (file_findfile(NULL, NULL) != NULL) { - sprintf(command_errbuf, "can't boot '%s', kernel module already loaded", argv[1]); + command_seterr("can't boot '%s', kernel module already loaded", + argv[1]); return(CMD_ERROR); } @@ -88,7 +89,7 @@ command_boot(int argc, char *argv[]) * Loaded anything yet? */ if ((fp = file_findfile(NULL, NULL)) == NULL) { - command_errmsg = "no bootable kernel"; + command_seterr("no bootable kernel"); return(CMD_ERROR); } @@ -107,7 +108,7 @@ command_boot(int argc, char *argv[]) return(CMD_ERROR); /* Call the exec handler from the loader matching the kernel */ - command_errmsg = strerror(file_formats[fp->f_loader]->l_exec(fp)); + command_seterr("%s", strerror(file_formats[fp->f_loader]->l_exec(fp)); return(CMD_ERROR); } @@ -131,7 +132,7 @@ command_autoboot(int argc, char *argv[]) case 2: howlong = strtol(argv[1], &cp, 0); if (*cp != 0) { - sprintf(command_errbuf, "bad delay '%s'", argv[1]); + command_seterr("bad delay '%s'", argv[1]); return(CMD_ERROR); } /* FALLTHROUGH */ @@ -139,7 +140,7 @@ command_autoboot(int argc, char *argv[]) return(autoboot(howlong, prompt)); } - command_errmsg = "too many arguments"; + command_seterr("too many arguments"); return(CMD_ERROR); } @@ -184,7 +185,7 @@ autoboot(int timeout, char *prompt) loadakernel(0, 0, argv); kernelname = getenv("kernelname"); if (kernelname == NULL) { - command_errmsg = "no valid kernel found"; + command_seterr("no valid kernel found"); return(CMD_ERROR); } } @@ -294,7 +295,7 @@ getrootmount(char *rootdev) if (getenv("vfs.root.mountfrom") != NULL) return(0); - sprintf(lbuf, "%s/etc/fstab", rootdev); + snprintf(lbuf, sizeof(lbuf), "%s/etc/fstab", rootdev); if ((fd = open(lbuf, O_RDONLY)) < 0) return(1); @@ -333,7 +334,7 @@ getrootmount(char *rootdev) fstyp = strdup(ep); /* build the final result and save it */ - sprintf(lbuf, "%s:%s", fstyp, dev); + snprintf(lbuf, sizeof(lbuf), "%s:%s", fstyp, dev); free(dev); free(fstyp); setenv("vfs.root.mountfrom", lbuf, 0); Index: src/sys/arch/ia64/stand/common/interp.c diff -u src/sys/arch/ia64/stand/common/interp.c:1.5 src/sys/arch/ia64/stand/common/interp.c:1.6 --- src/sys/arch/ia64/stand/common/interp.c:1.5 Thu Dec 27 15:21:51 2012 +++ src/sys/arch/ia64/stand/common/interp.c Tue Mar 25 14:35:32 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: interp.c,v 1.5 2012/12/27 20:21:51 martin Exp $ */ +/* $NetBSD: interp.c,v 1.6 2014/03/25 18:35:32 christos Exp $ */ /*- * Copyright (c) 1998 Michael Smith <msm...@freebsd.org> @@ -73,8 +73,7 @@ perform(int argc, char *argv[]) return(CMD_OK); /* set return defaults; a successful command will override these */ - command_errmsg = command_errbuf; - strcpy(command_errbuf, "no error message"); + command_seterr("no error message"); cmd = NULL; result = CMD_ERROR; @@ -86,7 +85,7 @@ perform(int argc, char *argv[]) if (cmd != NULL) { result = (cmd)(argc, argv); } else { - command_errmsg = "unknown command"; + command_seterr("unknown command"); } RETURN(result); } @@ -140,7 +139,7 @@ interact(void) #else if (!parse(&argc, &argv, input)) { if (perform(argc, argv)) - printf("%s: %s\n", argv[0], command_errmsg); + printf("%s: %s\n", argv[0], command_geterr()); free(argv); } else { printf("parse error\n"); @@ -210,7 +209,7 @@ include(const char *filename) #endif if (((fd = open(filename, O_RDONLY)) == -1)) { - sprintf(command_errbuf,"can't open '%s': %s\n", filename, strerror(errno)); + command_seterr("can't open '%s': %s\n", filename, strerror(errno)); return(CMD_ERROR); } @@ -275,7 +274,8 @@ include(const char *filename) #ifdef BOOT_FORTH res = bf_run(sp->text); if (res != VM_OUTOFTEXT) { - sprintf(command_errbuf, "Error while including %s, in the line:\n%s", filename, sp->text); + command_seterr("Error while including %s, in the line:\n%s", + filename, sp->text); res = CMD_ERROR; break; } else @@ -291,7 +291,7 @@ include(const char *filename) if (!parse(&argc, &argv, sp->text)) { if ((argc > 0) && (perform(argc, argv) != 0)) { /* normal command */ - printf("%s: %s\n", argv[0], command_errmsg); + printf("%s: %s\n", argv[0], command_geterr()); if (!(sp->flags & SL_IGNOREERR)) { res=CMD_ERROR; break; Index: src/sys/arch/ia64/stand/common/bootstrap.h diff -u src/sys/arch/ia64/stand/common/bootstrap.h:1.8 src/sys/arch/ia64/stand/common/bootstrap.h:1.9 --- src/sys/arch/ia64/stand/common/bootstrap.h:1.8 Thu Dec 27 15:21:50 2012 +++ src/sys/arch/ia64/stand/common/bootstrap.h Tue Mar 25 14:35:32 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: bootstrap.h,v 1.8 2012/12/27 20:21:50 martin Exp $ */ +/* $NetBSD: bootstrap.h,v 1.9 2014/03/25 18:35:32 christos Exp $ */ /*- * Copyright (c) 1998 Michael Smith <msm...@freebsd.org> @@ -50,10 +50,10 @@ struct devdesc #define DEVT_CD 3 }; -/* Commands and return values; nonzero return sets command_errmsg != NULL */ typedef int (bootblk_cmd_t)(int argc, char *argv[]); -extern char *command_errmsg; -extern char command_errbuf[]; /* XXX blah, length */ +int command_seterr(const char *fmt, ...) __printflike(1, 2); +const char *command_geterr(void); + #define CMD_OK 0 #define CMD_ERROR 1 Index: src/sys/arch/ia64/stand/common/dev_net.c diff -u src/sys/arch/ia64/stand/common/dev_net.c:1.8 src/sys/arch/ia64/stand/common/dev_net.c:1.9 --- src/sys/arch/ia64/stand/common/dev_net.c:1.8 Sun Jul 17 16:54:42 2011 +++ src/sys/arch/ia64/stand/common/dev_net.c Tue Mar 25 14:35:32 2014 @@ -1,5 +1,5 @@ /* - * $NetBSD: dev_net.c,v 1.8 2011/07/17 20:54:42 joerg Exp $ + * $NetBSD: dev_net.c,v 1.9 2014/03/25 18:35:32 christos Exp $ */ /*- @@ -279,7 +279,7 @@ net_getparams(int sock) printf("net_open: server path: %s\n", rootpath); d = socktodesc(sock); - sprintf(temp, "%6D", d->myea, ":"); + snprintf(temp, sizeof(temp), "%6D", d->myea, ":"); setenv("boot.netif.ip", inet_ntoa(myip), 1); setenv("boot.netif.netmask", intoa(netmask), 1); setenv("boot.netif.gateway", inet_ntoa(gateip), 1); Index: src/sys/arch/ia64/stand/common/commands.c diff -u src/sys/arch/ia64/stand/common/commands.c:1.3 src/sys/arch/ia64/stand/common/commands.c:1.4 --- src/sys/arch/ia64/stand/common/commands.c:1.3 Mon Jul 20 00:59:03 2009 +++ src/sys/arch/ia64/stand/common/commands.c Tue Mar 25 14:35:32 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: commands.c,v 1.3 2009/07/20 04:59:03 kiyohara Exp $ */ +/* $NetBSD: commands.c,v 1.4 2014/03/25 18:35:32 christos Exp $ */ /*- * Copyright (c) 1998 Michael Smith <msm...@freebsd.org> @@ -35,8 +35,24 @@ #include "bootstrap.h" -char *command_errmsg; -char command_errbuf[256]; /* XXX should have procedural interface for setting, size limit? */ +static char command_errbuf[256]; + +int +command_seterr(const char *fmt, ...) +{ + int len; + va_list ap; + va_start(fmt, ap); + len = vsnprintf(command_errbuf, sizeof(command_errbuf), fmt, ap); + va_end(ap); + return len; +} + +const char * +command_geterr(void) +{ + return command_errbuf; +} static int page_file(char *filename); @@ -133,7 +149,7 @@ command_help(int argc, char *argv[]) char *topic, *subtopic, *t, *s, *d; /* page the help text from our load path */ - sprintf(buf, "%s/boot/loader.help", getenv("loaddev")); + snprintf(buf, sizeof(buf), "%s/boot/loader.help", getenv("loaddev")); if ((hfd = open(buf, O_RDONLY)) < 0) { printf("Verbose help not available, use '?' to list commands\n"); return(CMD_OK); @@ -151,7 +167,7 @@ command_help(int argc, char *argv[]) topic = strdup("help"); break; default: - command_errmsg = "usage is 'help <topic> [<subtopic>]"; + command_seterr("usage is 'help <topic> [<subtopic>]"); return(CMD_ERROR); } @@ -197,7 +213,7 @@ command_help(int argc, char *argv[]) pager_close(); close(hfd); if (!matched) { - sprintf(command_errbuf, "no help available for '%s'", topic); + command_seterr("no help available for '%s'", topic); free(topic); if (subtopic) free(subtopic); @@ -226,7 +242,7 @@ command_commandlist(int argc, char *argv if (res) break; if ((cmdp->c_name != NULL) && (cmdp->c_desc != NULL)) { - sprintf(name, " %s ", cmdp->c_name); + snprintf(name, sizeof(name), " %s ", cmdp->c_name); pager_output(name); pager_output(cmdp->c_desc); res = pager_output("\n"); @@ -267,7 +283,7 @@ command_show(int argc, char *argv[]) if ((cp = getenv(argv[1])) != NULL) { printf("%s\n", cp); } else { - sprintf(command_errbuf, "variable '%s' not found", argv[1]); + command_seterr("variable '%s' not found", argv[1]); return(CMD_ERROR); } } @@ -281,11 +297,11 @@ command_set(int argc, char *argv[]) int err; if (argc != 2) { - command_errmsg = "wrong number of arguments"; + command_seterr("wrong number of arguments"); return(CMD_ERROR); } else { if ((err = putenv(argv[1])) != 0) { - command_errmsg = strerror(err); + command_seterr("%s", strerror(err)); return(CMD_ERROR); } } @@ -299,11 +315,11 @@ command_unset(int argc, char *argv[]) int err; if (argc != 2) { - command_errmsg = "wrong number of arguments"; + command_seterr("wrong number of arguments"); return(CMD_ERROR); } else { if ((err = unsetenv(argv[1])) != 0) { - command_errmsg = strerror(err); + command_seterr("%s", strerror(err)); return(CMD_ERROR); } } @@ -373,7 +389,7 @@ command_read(int argc, char *argv[]) case 't': timeout = strtol(optarg, &cp, 0); if (cp == optarg) { - sprintf(command_errbuf, "bad timeout '%s'", optarg); + command_seterr("bad timeout '%s'", optarg); return(CMD_ERROR); } break; @@ -416,12 +432,12 @@ command_more(int argc, char *argv[]) res=0; pager_open(); for (i = 1; (i < argc) && (res == 0); i++) { - sprintf(line, "*** FILE %s BEGIN ***\n", argv[i]); + snprintf(line, sizeof(line), "*** FILE %s BEGIN ***\n", argv[i]); if (pager_output(line)) break; res = page_file(argv[i]); if (!res) { - sprintf(line, "*** FILE %s END ***\n", argv[i]); + snprintf(line, sizeof(line), "*** FILE %s END ***\n", argv[i]); res = pager_output(line); } } @@ -441,7 +457,7 @@ page_file(char *filename) result = pager_file(filename); if (result == -1) - sprintf(command_errbuf, "error showing %s", filename); + command_seterr("error showing %s", filename); return result; } @@ -475,11 +491,11 @@ command_lsdev(int argc, char *argv[]) pager_open(); - sprintf(line, "Device Enumeration:\n"); + snprintf(line, sizeof(line), "Device Enumeration:\n"); pager_output(line); for (i = 0; i < ndevs; i++) { - sprintf(line, "%s\n", devsw[i].dv_name); + snprintf(line, sizeof(line), "%s\n", devsw[i].dv_name); if (pager_output(line)) break; } Index: src/sys/arch/ia64/stand/common/ls.c diff -u src/sys/arch/ia64/stand/common/ls.c:1.3 src/sys/arch/ia64/stand/common/ls.c:1.4 --- src/sys/arch/ia64/stand/common/ls.c:1.3 Mon Jul 20 00:59:03 2009 +++ src/sys/arch/ia64/stand/common/ls.c Tue Mar 25 14:35:32 2014 @@ -1,5 +1,5 @@ /* - * $NetBSD: ls.c,v 1.3 2009/07/20 04:59:03 kiyohara Exp $ + * $NetBSD: ls.c,v 1.4 2014/03/25 18:35:32 christos Exp $ */ /*- @@ -104,18 +104,21 @@ command_ls(int argc, char *argv[]) while ((d = readdirfd(fd)) != NULL) { /* if (strcmp(d->d_name, ".") && strcmp(d->d_name, "..")) { */ if (verbose) { + size_t buflen; /* stat the file, if possible */ sb.st_size = 0; - buf = alloc(strlen(path) + strlen(d->d_name) + 2); - sprintf(buf, "%s/%s", path, d->d_name); + buflen = strlen(path) + strlen(d->d_name) + 2; + buf = alloc(buflen); + snprintf(buf, buflen, "%s/%s", path, d->d_name); /* ignore return, could be symlink, etc. */ if (stat(buf, &sb)) sb.st_size = 0; free(buf); - sprintf(lbuf, " %c %8d %s\n", typestr[d->d_type], + snprintf(lbuf, sizeof(lbuf), " %c %8d %s\n", typestr[d->d_type], (int)sb.st_size, d->d_name); } else { - sprintf(lbuf, " %c %s\n", typestr[d->d_type], d->d_name); + snprintf(lbuf, sizeof(lbuf), " %c %s\n", typestr[d->d_type], + d->d_name); } if (pager_output(lbuf)) goto out; @@ -151,7 +154,7 @@ ls_getdir(char **pathp) /* Make sure the path is respectable to begin with */ if (archsw.arch_getdev(NULL, path, &cp)) { - sprintf(command_errbuf, "bad path '%s'", path); + command_seterr("bad path '%s'", path); goto out; } @@ -160,15 +163,15 @@ ls_getdir(char **pathp) strcat(path, "/"); fd = open(path, O_RDONLY); if (fd < 0) { - sprintf(command_errbuf, "open '%s' failed: %s", path, strerror(errno)); + command_seterr("open '%s' failed: %s", path, strerror(errno)); goto out; } if (fstat(fd, &sb) < 0) { - sprintf(command_errbuf, "stat failed: %s", strerror(errno)); + command_seterr("stat failed: %s", strerror(errno)); goto out; } if (!S_ISDIR(sb.st_mode)) { - sprintf(command_errbuf, "%s: %s", path, strerror(ENOTDIR)); + command_seterr("%s: %s", path, strerror(ENOTDIR)); goto out; } Index: src/sys/arch/ia64/stand/common/fileload.c diff -u src/sys/arch/ia64/stand/common/fileload.c:1.4 src/sys/arch/ia64/stand/common/fileload.c:1.5 --- src/sys/arch/ia64/stand/common/fileload.c:1.4 Thu Jun 27 17:22:16 2013 +++ src/sys/arch/ia64/stand/common/fileload.c Tue Mar 25 14:35:32 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: fileload.c,v 1.4 2013/06/27 21:22:16 christos Exp $ */ +/* $NetBSD: fileload.c,v 1.5 2014/03/25 18:35:32 christos Exp $ */ /*- * Copyright (c) 1998 Michael Smith <msm...@freebsd.org> @@ -68,7 +68,7 @@ command_load(int argc, char *argv[]) optreset = 1; typestr = NULL; if (argc == 1) { - command_errmsg = "no filename specified"; + command_seterr("no filename specified"); return(CMD_ERROR); } while ((ch = getopt(argc, argv, "k:")) != -1) { @@ -91,7 +91,7 @@ command_load(int argc, char *argv[]) if (dokld || file_havepath(argv[1])) { int error = file_loadkernel(argv[1], argc - 2, argv + 2); if (error == EEXIST) - sprintf(command_errbuf, "warning: KLD '%s' already loaded", argv[1]); + command_seterr("warning: KLD '%s' already loaded", argv[1]); return error == 0 ? CMD_OK : CMD_ERROR; } return CMD_OK; @@ -127,7 +127,7 @@ command_lskern(int argc, char *argv[]) pager_open(); for (fp = preloaded_files; fp; fp = fp->f_next) { - sprintf(lbuf, " %p: %s (%s, 0x%lx)\n", + snprintf(lbuf, sizeof(lbuf), " %p: %s (%s, 0x%lx)\n", (void *) fp->f_addr, fp->f_name, fp->f_type, (long) fp->f_size); pager_output(lbuf); if (fp->f_args != NULL) { @@ -161,7 +161,7 @@ file_load(char *filename, vaddr_t dest, if (error == EFTYPE) continue; /* Unknown to this handler? */ if (error) { - sprintf(command_errbuf, "can't load file '%s': %s", + command_seterr("can't load file '%s': %s", filename, strerror(error)); break; } @@ -184,7 +184,7 @@ file_loadkernel(char *filename, int argc */ fp = file_findfile(filename, NULL); if (fp) { - sprintf(command_errbuf, "warning: KLD '%s' already loaded", filename); + command_seterr("warning: KLD '%s' already loaded", filename); free(filename); return (0); } @@ -202,7 +202,7 @@ file_loadkernel(char *filename, int argc file_insert_tail(fp); /* Add to the list of loaded files */ } while(0); if (err == EFTYPE) - sprintf(command_errbuf, "don't know how to load module '%s'", filename); + command_seterr("don't know how to load module '%s'", filename); if (err && fp) file_discard(fp); free(filename); Index: src/sys/arch/ia64/stand/common/misc.c diff -u src/sys/arch/ia64/stand/common/misc.c:1.6 src/sys/arch/ia64/stand/common/misc.c:1.7 --- src/sys/arch/ia64/stand/common/misc.c:1.6 Thu Dec 27 15:21:51 2012 +++ src/sys/arch/ia64/stand/common/misc.c Tue Mar 25 14:35:32 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.6 2012/12/27 20:21:51 martin Exp $ */ +/* $NetBSD: misc.c,v 1.7 2014/03/25 18:35:32 christos Exp $ */ /*- * Copyright (c) 1998 Michael Smith <msm...@freebsd.org> @@ -175,7 +175,7 @@ hexdump(void *region, size_t len) void * line; int x, c; char lbuf[80]; -#define emit(fmt, args...) {sprintf(lbuf, fmt , ## args); pager_output(lbuf);} +#define emit(fmt, args...) {snprintf(lbuf, sizeof(lbuf), fmt , ## args); pager_output(lbuf);} pager_open(); for (line = region; line < (region + len); line += 16) { Index: src/sys/arch/ia64/stand/efi/libefi/devicename.c diff -u src/sys/arch/ia64/stand/efi/libefi/devicename.c:1.5 src/sys/arch/ia64/stand/efi/libefi/devicename.c:1.6 --- src/sys/arch/ia64/stand/efi/libefi/devicename.c:1.5 Thu Dec 27 15:21:51 2012 +++ src/sys/arch/ia64/stand/efi/libefi/devicename.c Tue Mar 25 14:35:33 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: devicename.c,v 1.5 2012/12/27 20:21:51 martin Exp $ */ +/* $NetBSD: devicename.c,v 1.6 2014/03/25 18:35:33 christos Exp $ */ /*- * Copyright (c) 1998 Michael Smith <msm...@freebsd.org> @@ -208,25 +208,24 @@ efi_fmtdev(void *vdev) { struct efi_devdesc *dev = (struct efi_devdesc *)vdev; static char buf[128]; /* XXX device length constant? */ - char *cp; + size_t len; switch(dev->d_type) { case DEVT_NONE: - strcpy(buf, "(no device)"); + strlcpy(buf, "(no device)", sizeof(buf)); break; case DEVT_DISK: - cp = buf; - cp += sprintf(cp, "%s%d", dev->d_dev->dv_name, dev->d_kind.efidisk.unit); + len = snprintf(buf, sizeof(buf), "%s%d", dev->d_dev->dv_name, dev->d_kind.efidisk.unit); if (dev->d_kind.efidisk.slice > 0) - cp += sprintf(cp, "s%d", dev->d_kind.efidisk.slice); + len += snprintf(buf + len, sizeof(buf) - len, "s%d", dev->d_kind.efidisk.slice); if (dev->d_kind.efidisk.partition >= 0) - cp += sprintf(cp, "%c", dev->d_kind.efidisk.partition + 'a'); - strcat(cp, ":"); + len += snprintf(buf + len, sizeof(buf) - len, "%c", dev->d_kind.efidisk.partition + 'a'); + strlcat(buf, ":", sizeof(buf) - len); break; case DEVT_NET: - sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_kind.netif.unit); + snprintf(buf, sizeof(buf), "%s%d:", dev->d_dev->dv_name, dev->d_kind.netif.unit); break; } return(buf); Index: src/sys/arch/ia64/stand/efi/libefi/efifs.c diff -u src/sys/arch/ia64/stand/efi/libefi/efifs.c:1.5 src/sys/arch/ia64/stand/efi/libefi/efifs.c:1.6 --- src/sys/arch/ia64/stand/efi/libefi/efifs.c:1.5 Sun Jul 17 16:54:42 2011 +++ src/sys/arch/ia64/stand/efi/libefi/efifs.c Tue Mar 25 14:35:33 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: efifs.c,v 1.5 2011/07/17 20:54:42 joerg Exp $ */ +/* $NetBSD: efifs.c,v 1.6 2014/03/25 18:35:33 christos Exp $ */ /*- * Copyright (c) 2001 Doug Rabson @@ -340,7 +340,7 @@ efifs_dev_print(int verbose) char line[80]; for (i = 0; i < fs_handle_count; i++) { - sprintf(line, " fs%d: EFI filesystem", i); + snprintf(line, sizeof(line), " fs%d: EFI filesystem", i); pager_output(line); /* XXX more detail? */ pager_output("\n"); Index: src/sys/arch/ia64/stand/ia64/efi/main.c diff -u src/sys/arch/ia64/stand/ia64/efi/main.c:1.8 src/sys/arch/ia64/stand/ia64/efi/main.c:1.9 --- src/sys/arch/ia64/stand/ia64/efi/main.c:1.8 Thu Dec 27 15:21:51 2012 +++ src/sys/arch/ia64/stand/ia64/efi/main.c Tue Mar 25 14:35:33 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.8 2012/12/27 20:21:51 martin Exp $ */ +/* $NetBSD: main.c,v 1.9 2014/03/25 18:35:33 christos Exp $ */ /*- * Copyright (c) 1998 Michael Smith <msm...@freebsd.org> @@ -272,7 +272,8 @@ guid_to_string(EFI_GUID *guid) { static char buf[40]; - sprintf(buf, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", + snprintf(buf, sizeof(buf), + "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", guid->Data1, guid->Data2, guid->Data3, guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]); @@ -443,7 +444,8 @@ print_trs(int type) buf.pte &= ~PTE_DIRTY; if (!(res.pal_result[0] & 8)) buf.pte &= ~PTE_MA_MASK; - sprintf(lbuf, "%03d %06x %013lx %013lx %4s %d %d %d %d %d " + snprintf(lbuf, sizeof(lbuf), + "%03d %06x %013lx %013lx %4s %d %d %d %d %d " "%-3s %d %06x\n", i, buf.rr.rr_rid, buf.ifa >> 12, (buf.pte & PTE_PPN_MASK) >> 12, psnames[(buf.itir & ITIR_PS_MASK) >> 2], Index: src/sys/arch/ia64/stand/ia64/ski/devicename.c diff -u src/sys/arch/ia64/stand/ia64/ski/devicename.c:1.4 src/sys/arch/ia64/stand/ia64/ski/devicename.c:1.5 --- src/sys/arch/ia64/stand/ia64/ski/devicename.c:1.4 Thu Dec 27 15:21:51 2012 +++ src/sys/arch/ia64/stand/ia64/ski/devicename.c Tue Mar 25 14:35:33 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: devicename.c,v 1.4 2012/12/27 20:21:51 martin Exp $ */ +/* $NetBSD: devicename.c,v 1.5 2014/03/25 18:35:33 christos Exp $ */ /*- * Copyright (c) 1998 Michael Smith <msm...@freebsd.org> @@ -203,7 +203,7 @@ ski_fmtdev(void *vdev) { struct ski_devdesc *dev = (struct ski_devdesc *)vdev; static char buf[128]; /* XXX device length constant? */ - char *cp; + size_t len; switch(dev->d_type) { case DEVT_NONE: @@ -211,17 +211,16 @@ ski_fmtdev(void *vdev) break; case DEVT_DISK: - cp = buf; - cp += sprintf(cp, "%s%d", dev->d_dev->dv_name, dev->d_kind.skidisk.unit); + len = snprintf(buf, sizeof(buf), "%s%d", dev->d_dev->dv_name, dev->d_kind.skidisk.unit); if (dev->d_kind.skidisk.slice > 0) - cp += sprintf(cp, "s%d", dev->d_kind.skidisk.slice); + len = snprintf(buf, sizeof(buf) - len, "s%d", dev->d_kind.skidisk.slice); if (dev->d_kind.skidisk.partition >= 0) - cp += sprintf(cp, "%c", dev->d_kind.skidisk.partition + 'a'); - strcat(cp, ":"); + len = snprintf(buf, sizeof(buf) - len, "%c", dev->d_kind.skidisk.partition + 'a'); + strlcat(cp, ":", sizeof(buf) - len); break; case DEVT_NET: - sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_kind.netif.unit); + snprintf(buf, sizeof(buf) - len, "%s%d:", dev->d_dev->dv_name, dev->d_kind.netif.unit); break; } return(buf);