X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=doas.c;h=618027b0aed023d1746372b18e8d4de560685fe8;hb=02339203a07f4f9a6b794728f753214e13f8e170;hp=79639261f61ded5a007ad820c3c6be7590ea41ef;hpb=26edde87e46f2601656361736472e216e8acf707;p=opendoas.git diff --git a/doas.c b/doas.c index 7963926..618027b 100644 --- a/doas.c +++ b/doas.c @@ -1,4 +1,4 @@ -/* $OpenBSD: doas.c,v 1.21 2015/07/24 06:36:42 zhuk Exp $ */ +/* $OpenBSD: doas.c,v 1.22 2015/07/26 17:24:02 zhuk Exp $ */ /* * Copyright (c) 2015 Ted Unangst * @@ -374,16 +374,18 @@ main(int argc, char **argv, char **envp) target)); parseconfig("/etc/doas.conf", 1); - cmd = argv[0]; + /* cmdline is used only for logging, no need to abort on truncate */ + (void) strlcpy(cmdline, argv[0], sizeof(cmdline)) < sizeof(cmdline); if (strlcpy(cmdline, argv[0], sizeof(cmdline)) >= sizeof(cmdline)) errx(1, "command line too long"); for (i = 1; i < argc; i++) { if (strlcat(cmdline, " ", sizeof(cmdline)) >= sizeof(cmdline)) - errx(1, "command line too long"); + break; if (strlcat(cmdline, argv[i], sizeof(cmdline)) >= sizeof(cmdline)) - errx(1, "command line too long"); + break; } + cmd = argv[0]; if (!permit(uid, groups, ngroups, &rule, target, cmd, (const char**)argv + 1)) { syslog(LOG_AUTHPRIV | LOG_NOTICE,