]> andersk Git - openssh.git/commitdiff
- deraadt@cvs.openbsd.org 2006/03/28 01:53:43
authordjm <djm>
Fri, 31 Mar 2006 12:11:28 +0000 (12:11 +0000)
committerdjm <djm>
Fri, 31 Mar 2006 12:11:28 +0000 (12:11 +0000)
     [ssh-agent.c]
     use strtonum() to parse the pid from the file, and range check it
     better; ok djm

ChangeLog
ssh-agent.c

index ac0b74613160f3f267512cee39c82f745408c4ea..db3803093fb4a481f9c196c4422dd6fd6e7ae0b1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
    - deraadt@cvs.openbsd.org 2006/03/28 01:52:28
      [channels.c]
      do not accept unreasonable X ports numbers; ok djm
+   - deraadt@cvs.openbsd.org 2006/03/28 01:53:43
+     [ssh-agent.c]
+     use strtonum() to parse the pid from the file, and range check it
+     better; ok djm
 
 20060326
  - OpenBSD CVS Sync
index eb99effd080f6e92af54c76ae1d7c82c80df66cc..162760ac2218f3b617b07c8b1870eab3dccfcb13 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-agent.c,v 1.135 2006/03/25 18:41:45 deraadt Exp $ */
+/* $OpenBSD: ssh-agent.c,v 1.136 2006/03/28 01:53:43 deraadt Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1077,20 +1077,24 @@ main(int ac, char **av)
 
        if (ac == 0 && !c_flag && !s_flag) {
                shell = getenv("SHELL");
-               if (shell != NULL && strncmp(shell + strlen(shell) - 3, "csh", 3) == 0)
+               if (shell != NULL &&
+                   strncmp(shell + strlen(shell) - 3, "csh", 3) == 0)
                        c_flag = 1;
        }
        if (k_flag) {
+               const char *errstr = NULL;
+
                pidstr = getenv(SSH_AGENTPID_ENV_NAME);
                if (pidstr == NULL) {
                        fprintf(stderr, "%s not set, cannot kill agent\n",
                            SSH_AGENTPID_ENV_NAME);
                        exit(1);
                }
-               pid = atoi(pidstr);
-               if (pid < 1) {
-                       fprintf(stderr, "%s=\"%s\", which is not a good PID\n",
-                           SSH_AGENTPID_ENV_NAME, pidstr);
+               pid = (int)strtonum(pidstr, 2, INT_MAX, &errstr);
+               if (errstr) {
+                       fprintf(stderr,
+                           "%s=\"%s\", which is not a good PID: %s\n",
+                           SSH_AGENTPID_ENV_NAME, pidstr, errstr);
                        exit(1);
                }
                if (kill(pid, SIGTERM) == -1) {
This page took 0.237102 seconds and 5 git commands to generate.