chicken-hackers
[Top][All Lists]
Advanced

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

[Chicken-hackers] [PATCH] Use C_snprintf and C_strlcpy in lieu of sprint


From: Evan Hanson
Subject: [Chicken-hackers] [PATCH] Use C_snprintf and C_strlcpy in lieu of sprintf and strcpy in dbg-stub.c
Date: Thu, 19 Jan 2017 22:15:24 +1300

This reuses our aliases from chicken.h and silences a couple of linker
warnings on OpenBSD.
---
 dbg-stub.c | 45 ++++++++++++++++++++++-----------------------
 1 file changed, 22 insertions(+), 23 deletions(-)

diff --git a/dbg-stub.c b/dbg-stub.c
index b41ec346..beb61b5b 100644
--- a/dbg-stub.c
+++ b/dbg-stub.c
@@ -261,10 +261,11 @@ static void
 send_value(C_word x)
 {
   if((x & C_FIXNUM_BIT) != 0)
-    sprintf(rw_buffer, " %ld", (long)C_unfix(x));
+    C_snprintf(rw_buffer, sizeof(rw_buffer), " %ld", (long)C_unfix(x));
   else if((x & C_IMMEDIATE_MARK_BITS) != 0)
-    sprintf(rw_buffer, " =%lu", (unsigned long)x);
-  else sprintf(rw_buffer, " @%lu", (unsigned long)x);
+    C_snprintf(rw_buffer, sizeof(rw_buffer), " =%lu", (unsigned long)x);
+  else
+    C_snprintf(rw_buffer, sizeof(rw_buffer), " @%lu", (unsigned long)x);
 
   send_string(rw_buffer);
 }
@@ -283,8 +284,8 @@ send_event(int event, C_char *loc, C_char *val, C_char 
*cloc, int cln)
   void **stats;
 
   for(;;) {
-    n = sprintf(rw_buffer, "(%d \"%s\" \"%s\" \"%s:%d\")\n", event, loc, val, 
cloc,
-            cln);
+    n = C_snprintf(rw_buffer, sizeof(rw_buffer), "(%d \"%s\" \"%s\" 
\"%s:%d\")\n",
+            event, loc, val, cloc, cln);
     send_string(rw_buffer);
 
     if(socket_read() < 0) terminate("read failed");
@@ -333,8 +334,8 @@ send_event(int event, C_char *loc, C_char *val, C_char 
*cloc, int cln)
       for(dip = unseen_dbg_info_list; dip != NULL; dip = dip->next) {
           for(dinfo = dip->info; dinfo->loc != NULL; ++dinfo) {
               if(*str == '\0' || strstr(dinfo->val, str)) {
-                  sprintf(rw_buffer, "(* %d %d \"%s\" \"%s\")\n", 
dbg_info_count++,
-                    dinfo->event, dinfo->loc, dinfo->val);
+                  C_snprintf(rw_buffer, sizeof(rw_buffer), "(* %d %d \"%s\" 
\"%s\")\n",
+                      dbg_info_count++, dinfo->event, dinfo->loc, dinfo->val);
                   send_string(rw_buffer);
               }
 
@@ -357,7 +358,7 @@ send_event(int event, C_char *loc, C_char *val, C_char 
*cloc, int cln)
       send_string("(*");
 
       while(mask--) {
-        sprintf(rw_buffer, " %u", (unsigned char) *(ptr++));
+        C_snprintf(rw_buffer, sizeof(rw_buffer), " %u", (unsigned char) 
*(ptr++));
         send_string(rw_buffer);
       }
 
@@ -381,11 +382,11 @@ send_event(int event, C_char *loc, C_char *val, C_char 
*cloc, int cln)
 
       if((C_header_bits(x) & C_BYTEBLOCK_BIT) != 0) {
         reply = C_header_size(x);
-        sprintf(rw_buffer, "(* BLOB %d", get_header_bits(x));
+        C_snprintf(rw_buffer, sizeof(rw_buffer), "(* BLOB %d", 
get_header_bits(x));
         send_string(rw_buffer);
 
         for(n = 0; n < reply; ++n) {
-          sprintf(rw_buffer, " %u", ((unsigned char *)C_data_pointer(x))[ n ]);
+          C_snprintf(rw_buffer, sizeof(rw_buffer), " %u", ((unsigned char 
*)C_data_pointer(x))[ n ]);
           send_string(rw_buffer);
         }
 
@@ -396,11 +397,11 @@ send_event(int event, C_char *loc, C_char *val, C_char 
*cloc, int cln)
       n = 0;
 
       if((C_header_bits(x) & C_SPECIALBLOCK_BIT) != 0) {
-        sprintf(rw_buffer, "(* SPECIAL %d " UWORD_COUNT_FORMAT_STRING,
-                get_header_bits(x), C_block_item(x, 0));
+        C_snprintf(rw_buffer, sizeof(rw_buffer), "(* SPECIAL %d " 
UWORD_COUNT_FORMAT_STRING,
+            get_header_bits(x), C_block_item(x, 0));
         n = 1;
       }
-      else sprintf(rw_buffer, "(* VECTOR %d", get_header_bits(x));
+      else C_snprintf(rw_buffer, sizeof(rw_buffer), "(* VECTOR %d", 
get_header_bits(x));
 
       send_string(rw_buffer);
 
@@ -432,34 +433,32 @@ send_event(int event, C_char *loc, C_char *val, C_char 
*cloc, int cln)
       send_string("(*");
 
       for(n = 0; n < 8; ++n) {
-        sprintf(rw_buffer, " " UWORD_COUNT_FORMAT_STRING, (C_uword)stats[ n ]);
+        C_snprintf(rw_buffer, sizeof(rw_buffer), " " 
UWORD_COUNT_FORMAT_STRING, (C_uword)stats[ n ]);
         send_string(rw_buffer);
       }
 
-      sprintf(rw_buffer, " " UWORD_COUNT_FORMAT_STRING ")\n",
-              (C_uword)C_stack_pointer);
+      C_snprintf(rw_buffer, sizeof(rw_buffer), " " UWORD_COUNT_FORMAT_STRING 
")\n",
+          (C_uword)C_stack_pointer);
       send_string(rw_buffer);
       break;
 
     case C_DEBUG_REPLY_GET_TRACE:
       str = C_dump_trace(0);
-      strcpy(rw_buffer, "(* \"");
+      C_strlcpy(rw_buffer, "(* \"", sizeof(rw_buffer));
       ptr = rw_buffer + 4;
 
       while(*str != '\0') {
         if(*str == '\n') {
-          strcpy(ptr, "\")\n");
-          ptr[ 4 ] = '\0';
+          C_strlcpy(ptr, "\")\n", 4);
           send_string(rw_buffer);
-          strcpy(rw_buffer, "(* \"");
+          C_strlcpy(rw_buffer, "(* \"", sizeof(rw_buffer));
           ptr = rw_buffer + 4;
           ++str;
         }
         else *(ptr++) = *(str++);
       }
 
-      strcpy(ptr, "\")\n");
-      ptr[ 4 ] = '\0';
+      C_strlcpy(ptr, "\")\n", 4);
       send_string(rw_buffer);
       break;
 
@@ -538,7 +537,7 @@ connect_to_debugger()
   if(connect(socket_fd, (struct sockaddr *)&sa, sizeof(struct sockaddr_in)) == 
SOCKET_ERROR)
     return C_SCHEME_FALSE;                     /* failed to connect */
 
-  sprintf(info, "%s:%d:%d", C_main_argv[ 0 ], getpid(), 
C_DEBUG_PROTOCOL_VERSION);
+  C_snprintf(info, sizeof(info), "%s:%d:%d", C_main_argv[ 0 ], getpid(), 
C_DEBUG_PROTOCOL_VERSION);
   send_event(C_DEBUG_CONNECT, info, "", "", 0);
 #ifndef _WIN32
   C_signal(SIGUSR2, interrupt_signal_handler);
-- 
2.11.0




reply via email to

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