]> git.corax.cc Git - corax/commitdiff
Fix %% and %c conversion specifications in snprintf() format strings
authorMatthias Kruk <m@m10k.eu>
Tue, 31 Dec 2019 05:05:47 +0000 (14:05 +0900)
committerMatthias Kruk <m@m10k.eu>
Tue, 31 Dec 2019 05:05:47 +0000 (14:05 +0900)
kernel/klibc/stdio.c

index 74c2b3dabb34bd6a5cc75a757b0a734d0f50cae3..f8e596a130e429855a28e724a3a8e69f744387d4 100644 (file)
@@ -396,7 +396,7 @@ int snprintf(char *str, size_t size, const char *format, ...)
        } while(0)
 #define OUTPUT(_c) do {                                                        \
                if(offset < size) {                                             \
-                       str[offset++] = c;                                      \
+                       str[offset++] = (_c);                           \
                } else {                                                                \
                        goto gtfo;                                                      \
                }                                                                               \
@@ -527,6 +527,7 @@ int snprintf(char *str, size_t size, const char *format, ...)
 #if FEATURE(SNPRINTF_CONV_BIN)
                        case 'b':
 #endif /* FEATURE(SNPRINTF_CONV_BIN) */
+                       case '%':
                                /* parse again in STATE_CONV */
                            SET_STATE(STATE_CONV);
                                break;
@@ -585,6 +586,7 @@ int snprintf(char *str, size_t size, const char *format, ...)
 #if FEATURE(SNPRINTF_CONV_BIN)
                        case 'b':
 #endif /* FEATURE(SNPRINTF_CONV_BIN) */
+                       case '%':
                                SET_STATE(STATE_CONV);
                                break;
 
@@ -637,6 +639,7 @@ int snprintf(char *str, size_t size, const char *format, ...)
 #if FEATURE(SNPRINTF_CONV_BIN)
                        case 'b':
 #endif /* FEATURE(SNPRINTF_CONV_BIN) */
+                       case '%':
                                SET_STATE(STATE_CONV);
                                break;
 
@@ -676,6 +679,7 @@ int snprintf(char *str, size_t size, const char *format, ...)
 #if FEATURE(SNPRINTF_CONV_BIN)
                        case 'b':
 #endif /* FEATURE(SNPRINTF_CONV_BIN) */
+                       case '%':
                                SET_STATE(STATE_CONV);
                                break;