浏览代码

Replace uses of strndup (a GNU extension) with Qemu pstrdup

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5532 c046a42c-6fe2-441c-8c8c-71466251a162
blueswir1 17 年之前
父节点
当前提交
2bd7318c1a
共有 3 个文件被更改,包括 14 次插入1 次删除
  1. 12 0
      cutils.c
  2. 1 1
      hw/bt-hci.c
  3. 1 0
      qemu-common.h

+ 12 - 0
cutils.c

@@ -50,6 +50,18 @@ char *pstrcat(char *buf, int buf_size, const char *s)
     return buf;
     return buf;
 }
 }
 
 
+/* strdup with a limit */
+char *pstrdup(const char *str, size_t buf_size)
+{
+    size_t len;
+    char *buf;
+
+    len = MIN(buf_size, strlen(str));
+    buf = qemu_malloc(len);
+    pstrcpy(buf, len, str);
+    return buf;
+}
+
 int strstart(const char *str, const char *val, const char **ptr)
 int strstart(const char *str, const char *val, const char **ptr)
 {
 {
     const char *p, *q;
     const char *p, *q;

+ 1 - 1
hw/bt-hci.c

@@ -1814,7 +1814,7 @@ static void bt_submit_hci(struct HCIInfo *info,
 
 
         if (hci->device.lmp_name)
         if (hci->device.lmp_name)
             free((void *) hci->device.lmp_name);
             free((void *) hci->device.lmp_name);
-        hci->device.lmp_name = strndup(PARAM(change_local_name, name),
+        hci->device.lmp_name = pstrdup(PARAM(change_local_name, name),
                         sizeof(PARAM(change_local_name, name)));
                         sizeof(PARAM(change_local_name, name)));
         bt_hci_event_complete_status(hci, HCI_SUCCESS);
         bt_hci_event_complete_status(hci, HCI_SUCCESS);
         break;
         break;

+ 1 - 0
qemu-common.h

@@ -82,6 +82,7 @@ int qemu_timedate_diff(struct tm *tm);
 /* cutils.c */
 /* cutils.c */
 void pstrcpy(char *buf, int buf_size, const char *str);
 void pstrcpy(char *buf, int buf_size, const char *str);
 char *pstrcat(char *buf, int buf_size, const char *s);
 char *pstrcat(char *buf, int buf_size, const char *s);
+char *pstrdup(const char *str, size_t buf_size);
 int strstart(const char *str, const char *val, const char **ptr);
 int strstart(const char *str, const char *val, const char **ptr);
 int stristart(const char *str, const char *val, const char **ptr);
 int stristart(const char *str, const char *val, const char **ptr);
 time_t mktimegm(struct tm *tm);
 time_t mktimegm(struct tm *tm);