]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
- (dtucker) [openbsd-compat/setproctitle.c] Handle error case form the 2nd
authorDarren Tucker <dtucker@zip.com.au>
Sun, 3 Nov 2013 06:20:34 +0000 (17:20 +1100)
committerDarren Tucker <dtucker@zip.com.au>
Sun, 3 Nov 2013 06:20:34 +0000 (17:20 +1100)
   vsnprintf.  From eric at openbsd via chl@.

ChangeLog
openbsd-compat/setproctitle.c

index 684675ca61f3502c8e6b8e60e3fc2e5cd8a25bcc..7513c3d5058ce0b8e977512d69d794b7b8381f32 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,8 @@
  - (dtucker) [openbsd-compat/bsd-misc.c] Include time.h for nanosleep.
    From OpenSMTPD where it prevents "implicit declaration" warnings (it's
    a no-op in OpenSSH).  From chl at openbsd.
+ - (dtucker) [openbsd-compat/setproctitle.c] Handle error case form the 2nd
+   vsnprintf.  From eric at openbsd via chl@.
 
 20131030
  - (djm) OpenBSD CVS Sync
index 2965f689e702f9545bc2401fe5add5f2bbd43405..a69db22a2c9028968d9734d73adf29dd4d3b7416 100644 (file)
@@ -125,6 +125,7 @@ setproctitle(const char *fmt, ...)
        va_list ap;
        char buf[1024], ptitle[1024];
        size_t len;
+       int r;
        extern char *__progname;
 #if SPT_TYPE == SPT_PSTAT
        union pstun pst;
@@ -137,13 +138,16 @@ setproctitle(const char *fmt, ...)
 
        strlcpy(buf, __progname, sizeof(buf));
 
+       r = -1;
        va_start(ap, fmt);
        if (fmt != NULL) {
                len = strlcat(buf, ": ", sizeof(buf));
                if (len < sizeof(buf))
-                       vsnprintf(buf + len, sizeof(buf) - len , fmt, ap);
+                       r = vsnprintf(buf + len, sizeof(buf) - len , fmt, ap);
        }
        va_end(ap);
+       if (r == -1 || (size_t)r >= sizeof(buf) - len)
+               return;
        strnvis(ptitle, buf, sizeof(ptitle),
            VIS_CSTYLE|VIS_NL|VIS_TAB|VIS_OCTAL);