]> granicus.if.org Git - sudo/commitdiff
Avoid potentially undefined behavior.
authorTodd C. Miller <Todd.Miller@sudo.ws>
Tue, 16 Oct 2018 18:50:43 +0000 (12:50 -0600)
committerTodd C. Miller <Todd.Miller@sudo.ws>
Tue, 16 Oct 2018 18:50:43 +0000 (12:50 -0600)
Found by PVS Studio.

plugins/sudoers/sudoers.c

index e57ee31c601ea8b3c8ef12dd4d3a96f29e91855a..7d7b3f5accb7f61ad4f63923be8e5ecf33df257d 100644 (file)
@@ -274,7 +274,8 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
            sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
            goto done;
        }
-       memcpy(++NewArgv, argv, argc * sizeof(char *));
+       NewArgv++;      /* reserve an extra slot for --login */
+       memcpy(NewArgv, argv, argc * sizeof(char *));
        NewArgv[NewArgc] = NULL;
        if (ISSET(sudo_mode, MODE_LOGIN_SHELL) && runas_pw != NULL) {
            NewArgv[0] = strdup(runas_pw->pw_shell);