diff src/dbusbind.c @ 97797:14fccbb34a16

* dbusbind.c (XD_ERROR, XD_DEBUG_MESSAGE): Use strncpy and snprintf, respectively. (xd_append_arg): Convert strings with Fstring_make_unibyte.
author Michael Albinus <michael.albinus@gmx.de>
date Thu, 28 Aug 2008 20:28:12 +0000
parents 194ecdbbd8a3
children e5f33aa05b97
line wrap: on
line diff
--- a/src/dbusbind.c	Thu Aug 28 20:19:17 2008 +0000
+++ b/src/dbusbind.c	Thu Aug 28 20:28:12 2008 +0000
@@ -71,7 +71,7 @@
 #define XD_ERROR(error)							\
   do {									\
     char s[1024];							\
-    strcpy (s, error.message);						\
+    strncpy (s, error.message, 1023);					\
     dbus_error_free (&error);						\
     /* Remove the trailing newline.  */					\
     if (strchr (s, '\n') != NULL)					\
@@ -85,7 +85,7 @@
 #define XD_DEBUG_MESSAGE(...)		\
   do {					\
     char s[1024];			\
-    sprintf (s, __VA_ARGS__);		\
+    snprintf (s, 1023, __VA_ARGS__);	\
     printf ("%s: %s\n", __func__, s);	\
     message ("%s: %s", __func__, s);	\
   } while (0)
@@ -104,7 +104,7 @@
     if (!NILP (Vdbus_debug))						\
       {									\
 	char s[1024];							\
-	sprintf (s, __VA_ARGS__);					\
+	snprintf (s, 1023, __VA_ARGS__);				\
 	message ("%s: %s", __func__, s);				\
       }									\
   } while (0)
@@ -179,7 +179,7 @@
    signature is embedded, or DBUS_TYPE_INVALID.  It is needed for the
    check that DBUS_TYPE_DICT_ENTRY occurs only as array element.  */
 void
-xd_signature(signature, dtype, parent_type, object)
+xd_signature (signature, dtype, parent_type, object)
      char *signature;
      unsigned int dtype, parent_type;
      Lisp_Object object;
@@ -454,7 +454,7 @@
       case DBUS_TYPE_OBJECT_PATH:
       case DBUS_TYPE_SIGNATURE:
 	{
-	  char *val = SDATA (object);
+	  char *val = SDATA (Fstring_make_unibyte (object));
 	  XD_DEBUG_MESSAGE ("%c %s", dtype, val);
 	  if (!dbus_message_iter_append_basic (iter, dtype, &val))
 	    xsignal2 (Qdbus_error,