emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/emacsql ab53199d07 232/427: Fix escaping issue in middlewa


From: ELPA Syncer
Subject: [nongnu] elpa/emacsql ab53199d07 232/427: Fix escaping issue in middleware.
Date: Tue, 13 Dec 2022 02:59:47 -0500 (EST)

branch: elpa/emacsql
commit ab53199d07a28219986ef9453836d53478d4f5e8
Author: Christopher Wellons <wellons@nullprogram.com>
Commit: Christopher Wellons <wellons@nullprogram.com>

    Fix escaping issue in middleware.
---
 sqlite/emacsql.c | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/sqlite/emacsql.c b/sqlite/emacsql.c
index 7e4e680d59..3fcc5655b1 100644
--- a/sqlite/emacsql.c
+++ b/sqlite/emacsql.c
@@ -6,28 +6,30 @@
 #define TRUE 1
 #define FALSE 0
 
-char *dup(const char *s) {
-    char *copy = malloc(strlen(s));
-    while (*s) {
-        *copy = *s;
-        copy++;
-        s++;
+char* escape(const char *message) {
+    int count = 0, length_orig = strlen(message);
+    for (int i = 0; i < length_orig; i++) {
+        if (message[i] == '"') {
+            count++;
+        }
     }
-    return copy;
-}
-
-char *escape(char *message) {
+    char *copy = malloc(length_orig + count + 1);
+    char *p = copy;
     while (*message) {
         if (*message == '"') {
-            *message = '\'';
+            *p = '\\';
+            p++;
         }
+        *p = *message;
         message++;
+        p++;
     }
-    return message;
+    *p = '\0';
+    return copy;
 }
 
 void send_error(int code, const char *message) {
-    char *escaped = escape(dup(message));
+    char *escaped = escape(message);
     printf("error %d \"%s\"\n", code, escaped);
     free(escaped);
 }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]