diff options
| author | 2009-01-08 22:19:44 +0100 | |
|---|---|---|
| committer | 2009-01-08 22:19:44 +0100 | |
| commit | e0b6a20b79e1a438125c72a3335713af01619ea9 (patch) | |
| tree | 6e984b84d771590e80e6985271a24d9842c1179a | |
| parent | d174ba080c959cab3245fb1714c6d6340ebbac09 (diff) | |
| download | libplist-e0b6a20b79e1a438125c72a3335713af01619ea9.tar.gz libplist-e0b6a20b79e1a438125c72a3335713af01619ea9.tar.bz2 | |
fix length of basic types while parsing binary plist.
| -rw-r--r-- | src/bplist.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/bplist.c b/src/bplist.c index b633535..746c13e 100644 --- a/src/bplist.c +++ b/src/bplist.c | |||
| @@ -113,6 +113,8 @@ static plist_t parse_uint_node(char *bnode, uint8_t size, char **next_object) | |||
| 113 | 113 | ||
| 114 | *next_object = bnode + size; | 114 | *next_object = bnode + size; |
| 115 | data->type = PLIST_UINT; | 115 | data->type = PLIST_UINT; |
| 116 | data->length = sizeof(uint64_t); | ||
| 117 | |||
| 116 | return g_node_new(data); | 118 | return g_node_new(data); |
| 117 | } | 119 | } |
| 118 | 120 | ||
| @@ -131,6 +133,8 @@ static plist_t parse_real_node(char *bnode, uint8_t size) | |||
| 131 | return NULL; | 133 | return NULL; |
| 132 | } | 134 | } |
| 133 | data->type = PLIST_REAL; | 135 | data->type = PLIST_REAL; |
| 136 | data->length = sizeof(double); | ||
| 137 | |||
| 134 | return g_node_new(data); | 138 | return g_node_new(data); |
| 135 | } | 139 | } |
| 136 | 140 | ||
| @@ -143,6 +147,8 @@ static plist_t parse_date_node(char *bnode, uint8_t size) | |||
| 143 | data->timeval.tv_sec = (glong) time_real; | 147 | data->timeval.tv_sec = (glong) time_real; |
| 144 | data->timeval.tv_usec = (time_real - (glong) time_real) * G_USEC_PER_SEC; | 148 | data->timeval.tv_usec = (time_real - (glong) time_real) * G_USEC_PER_SEC; |
| 145 | data->type = PLIST_DATE; | 149 | data->type = PLIST_DATE; |
| 150 | data->length = sizeof(GTimeVal); | ||
| 151 | |||
| 146 | return node; | 152 | return node; |
| 147 | } | 153 | } |
| 148 | 154 | ||
| @@ -154,6 +160,7 @@ static plist_t parse_string_node(char *bnode, uint8_t size) | |||
| 154 | data->strval = (char *) malloc(sizeof(char) * (size + 1)); | 160 | data->strval = (char *) malloc(sizeof(char) * (size + 1)); |
| 155 | memcpy(data->strval, bnode, size); | 161 | memcpy(data->strval, bnode, size); |
| 156 | data->strval[size] = '\0'; | 162 | data->strval[size] = '\0'; |
| 163 | data->length = strlen(data->strval); | ||
| 157 | 164 | ||
| 158 | return g_node_new(data); | 165 | return g_node_new(data); |
| 159 | } | 166 | } |
| @@ -166,6 +173,7 @@ static plist_t parse_unicode_node(char *bnode, uint8_t size) | |||
| 166 | data->unicodeval = (wchar_t *) malloc(sizeof(wchar_t) * (size + 1)); | 173 | data->unicodeval = (wchar_t *) malloc(sizeof(wchar_t) * (size + 1)); |
| 167 | memcpy(data->unicodeval, bnode, size); | 174 | memcpy(data->unicodeval, bnode, size); |
| 168 | data->unicodeval[size] = '\0'; | 175 | data->unicodeval[size] = '\0'; |
| 176 | data->length = wcslen(data->unicodeval); | ||
| 169 | 177 | ||
| 170 | return g_node_new(data); | 178 | return g_node_new(data); |
| 171 | } | 179 | } |
