Workarounds for compiling with -D_FORTIFY_SOURCE=2 (as Ubuntu does), which
[u/mdw/putty] / logging.c
index db02892..49269ec 100644 (file)
--- a/logging.c
+++ b/logging.c
@@ -43,7 +43,10 @@ static void logwrite(struct LogContext *ctx, void *data, int len)
        bufchain_add(&ctx->queue, data, len);
     } else if (ctx->state == L_OPEN) {
        assert(ctx->lgfp);
-       fwrite(data, 1, len, ctx->lgfp);
+       if (fwrite(data, 1, len, ctx->lgfp) < len) {
+           logfclose(ctx);
+           ctx->state = L_ERROR;
+       }
     }                                 /* else L_ERROR, so ignore the write */
 }
 
@@ -85,7 +88,7 @@ static void logfopen_callback(void *handle, int mode)
        ctx->state = L_ERROR;          /* disable logging */
     } else {
        fmode = (mode == 1 ? "ab" : "wb");
-       ctx->lgfp = f_open(ctx->currlogfilename, fmode, TRUE);
+       ctx->lgfp = f_open(ctx->currlogfilename, fmode, FALSE);
        if (ctx->lgfp)
            ctx->state = L_OPEN;
        else
@@ -384,7 +387,7 @@ static void xlatlognam(Filename *dest, Filename src,
            char c;
            s++;
            size = 0;
-           if (*s) switch (c = *s++, tolower(c)) {
+           if (*s) switch (c = *s++, tolower((unsigned char)c)) {
              case 'y':
                size = strftime(buf, sizeof(buf), "%Y", tm);
                break;