]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream commit
authorlogan@openbsd.org <logan@openbsd.org>
Mon, 16 Nov 2015 06:13:04 +0000 (06:13 +0000)
committerDamien Miller <djm@mindrot.org>
Tue, 17 Nov 2015 00:15:20 +0000 (11:15 +1100)
1) Use xcalloc() instead of xmalloc() to check for
 potential overflow.    (Feedback from both mmcc@ and djm@) 2) move set_size
 just before the for loop. (suggested by djm@)

OK djm@

Upstream-ID: 013534c308187284756c3141f11d2c0f33c47213

sftp-server.c

index eac11d7e695d2a3c8919b23bb822646f50ef2134..62e76a5052708186582a80b975b38c12f283b5aa 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-server.c,v 1.107 2015/08/20 22:32:42 deraadt Exp $ */
+/* $OpenBSD: sftp-server.c,v 1.108 2015/11/16 06:13:04 logan Exp $ */
 /*
  * Copyright (c) 2000-2004 Markus Friedl.  All rights reserved.
  *
@@ -1631,9 +1631,8 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw)
        if ((oqueue = sshbuf_new()) == NULL)
                fatal("%s: sshbuf_new failed", __func__);
 
-       set_size = howmany(max + 1, NFDBITS) * sizeof(fd_mask);
-       rset = xmalloc(set_size);
-       wset = xmalloc(set_size);
+       rset = xcalloc(howmany(max + 1, NFDBITS), sizeof(fd_mask));
+       wset = xcalloc(howmany(max + 1, NFDBITS), sizeof(fd_mask));
 
        if (homedir != NULL) {
                if (chdir(homedir) != 0) {
@@ -1642,6 +1641,7 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw)
                }
        }
 
+       set_size = howmany(max + 1, NFDBITS) * sizeof(fd_mask);
        for (;;) {
                memset(rset, 0, set_size);
                memset(wset, 0, set_size);