[Title] modify sys_get_str
authorjihye kim <jihye1128.kim@samsung.com>
Wed, 5 Sep 2012 11:21:11 +0000 (20:21 +0900)
committerjihye kim <jihye1128.kim@samsung.com>
Wed, 5 Sep 2012 11:21:11 +0000 (20:21 +0900)
[Type] bug fix
[Module] device-manager-plugin
[Priority] major
[Jira#]
[Redmine#]
[Problem] throw memory leak
[Cause] they do not freeing memory
[Solution] using local memory buffer
[TestCase]

packaging/device-manager-plugin-maru.spec
src/device_manager_io.c
src/device_manager_plugin_maru.c

index 657e36a..46341d6 100644 (file)
@@ -1,6 +1,6 @@
 Name:       device-manager-plugin-maru
 Summary:    device-manager-plugin-maru
-Version: 0.0.8
+Version: 0.0.9
 Release:    1
 Group:      TO_BE/FILLED_IN
 License:    TO_BE/FILLED_IN
index 00fff4d..3ae0420 100644 (file)
@@ -136,15 +136,16 @@ int sys_get_int(char *fname, int *val)
        }
 }
 
-char *sys_get_str(char *fname)
+int sys_get_str(char *fname, char* str)
 {
-       char buf[BUFF_MAX];
-       char *r = NULL;
+       char buf[BUFF_MAX] = {0};
 
-       if (sys_read_buf(fname, buf) == 0)
-               r = strdup((char *)buf);
+       if (sys_read_buf(fname, buf) == 0) {
+               strncpy(str, buf, strlen(buf));
+               return 0;
+       }
 
-       return r;
+       return -1;
 }
 
 int sys_set_int(char *fname, int val)
index 044e00f..7015590 100644 (file)
 #define BUFF_MAX       255
 #define MAX_NAME 255
 
+// TODO : checking return value
+#if 0
 #define GENERATE_ACCESSORS_CHAR_RW(_suffix, _item)     \
-char *OEM_sys_get_##_suffix(                 \
+char *OEM_sys_get_##_suffix(char* str)                 \
 {                                              \
-       return sys_get_str(_item);      \
+       return sys_get_str(_item, str); \
 }                                              \
                                                \
 int OEM_sys_set_##_suffix(char *str)                   \
@@ -47,9 +49,9 @@ int OEM_sys_set_##_suffix(char *str)                  \
 }
 
 #define GENERATE_ACCESSORS_CHAR_R(_suffix, _item)      \
-char *OEM_sys_get_##_suffix(                 \
+char *OEM_sys_get_##_suffix(char* str)                 \
 {                                              \
-       return sys_get_str(_item);      \
+       return sys_get_str(_item, str); \
 }
 
 #define GENERATE_ACCESSORS_CHAR_W(_suffix, _item)      \
@@ -57,6 +59,7 @@ int OEM_sys_set_##_suffix(char *str)                  \
 {                                              \
        return sys_set_str(_item, str);         \
 }
+#endif
 
 /* TODO: Add APIs has (char *) params */
 
@@ -493,11 +496,12 @@ static char *health_text[] = {
 
 int OEM_sys_get_battery_health(int *value)
 {
-       char *buf;
-       int i = 0;
+       char buf[BUFF_MAX] = {0};
+       int ret = 0;
+       int i   = 0;
 
-       buf = sys_get_str(BATTERY_HEALTH_PATH);
-       if (NULL == buf) {
+       ret = sys_get_str(BATTERY_HEALTH_PATH, buf);
+       if (ret != 0) {
                return -1;
        }
 
@@ -520,10 +524,11 @@ int OEM_sys_get_battery_polling_required(int *value)
 
 int OEM_sys_get_uart_path(int *value)
 {
-       char *buf;
+       char buf[BUFF_MAX] = {0};
+       int ret = 0;
 
-       buf = sys_get_str(UART_PATH);
-       if (NULL == buf) {
+       ret = sys_get_str(UART_PATH, buf);
+       if (ret != 0) {
                return -1;
        }
 
@@ -553,10 +558,11 @@ int OEM_sys_set_uart_path(int value)
 
 int OEM_sys_get_usb_path(int *value)
 {
-       char *buf;
+       char buf[BUFF_MAX] = {0};
+       int ret = 0;
 
-       buf = sys_get_str(USB_PATH);
-       if (NULL == buf) {
+       ret = sys_get_str(USB_PATH, buf);
+       if (ret != 0) {
                return -1;
        }