about summary refs log tree commit diff stats
path: root/src/ui
diff options
context:
space:
mode:
authorswirl <swurl@swurl.xyz>2022-06-14 21:04:26 -0400
committerswirl <swurl@swurl.xyz>2022-06-14 21:04:26 -0400
commit7ed944254f4d5f91a48cdaab643d630e9f532af6 (patch)
tree4d759a8e30028926160f30e52f73a52a3cfc4976 /src/ui
parent4d6bc1adf8301dc5dc1986cc868171e2dd9179e1 (diff)
downloadprofani-tty-7ed944254f4d5f91a48cdaab643d630e9f532af6.tar.gz
remove VLAs in OMEMO QR Code function
Removes the use of VLAs in favor of calloc

Signed-off-by: swirl <swurl@swurl.xyz>
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/console.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/ui/console.c b/src/ui/console.c
index 37b2d377..7f245a16 100644
--- a/src/ui/console.c
+++ b/src/ui/console.c
@@ -878,17 +878,21 @@ cons_show_qrcode(const char* const text)
 
     ProfWin* console = wins_get_console();
 
-    char buf[(width * 4) + 1];
-    memset(buf, 0, sizeof buf);
+    char *buf = calloc((width * 4) + 1, 1);
 
-    char tmp[(width * 4) + 5];
-    memset(tmp, 0, sizeof tmp);
+    char *pad = calloc((width * 4) + 5, 1);
+
+    if (!buf || !pad) {
+        free(pad);
+        free(buf);
+        return;
+    }
 
     for (int i = 0; i < width + 2 * ZOOM_SIZE; i += ZOOM_SIZE) {
-        strcat(tmp, "\u2588\u2588");
+        strcat(pad, "\u2588\u2588");
     }
 
-    win_println(console, THEME_DEFAULT, "", tmp);
+    win_println(console, THEME_DEFAULT, "", pad);
     for (size_t y = 0; y < width; y += ZOOM_SIZE) {
         for (size_t x = 0; x < width; x += ZOOM_SIZE) {
             strcat(buf, !(*data & 1) ? "\u2588\u2588" : "\u2800\u2800");
@@ -901,7 +905,10 @@ cons_show_qrcode(const char* const text)
         win_println(console, THEME_DEFAULT, "", "\u2588\u2588%s\u2588\u2588", buf);
         memset(buf, 0, sizeof buf);
     }
-    win_println(console, THEME_DEFAULT, "", "%s", tmp);
+    win_println(console, THEME_DEFAULT, "", "%s", pad);
+
+    free(pad);
+    free(buf);
 
     QRcode_free(qrcode);
 #else
@@ -2941,3 +2948,4 @@ cons_remove_alert(ProfWin* window)
     g_list_free_full(item, g_free);
     free(win_name);
 }
+