RE: [PATCH] ota_tokenize_bookmarks
"Rene Kluwen" <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <[email protected]> |
-----Original Message----- From: [email protected] [mailto:[email protected]]On Behalf Of Alexander Malysh Sent: donderdag 6 april 2006 12:01 To: [email protected] Subject: Re: ota_tokenize_bookmarks Hi Rene, you are right about memleaks. Could you please provide patch? Thanks, Alex Rene Kluwen schrieb: > I was looking at the file ota_prov.c. > When I sent an ota-bookmark to myself, on a Siemens C60, I get an SMS > message with garbage. > Has anybody experienced this as well? And better: Does anyone have a > solution for this? > > Another reason to write this email is, when looking at line 487 & 506, the > octstr_append function > is called with octstr_duplicate as parameter. > > When looking at the octstr_append fn (and further down into > octstr_insert()), I see no disposal of > that parameter. Shouldn't the octstr_duplicate function call in the second > parameter be removed?? > Am I seeing things wrong here? > > See the code below: I marked the havoc lines with comments. > > > /* name */ > if (name != NULL) { > /* PARM with attributes */ > octstr_append_from_hex(msg->sms.msgdata, "87"); > /* NAME=PROXY, VALUE, inline string */ > octstr_append_char(msg->sms.msgdata, WBXML_TOK_NAME_NAME); > octstr_append_char(msg->sms.msgdata, WBXML_TOK_VALUE); > octstr_append_char(msg->sms.msgdata, WBXML_TOK_STR_I); > octstr_append(msg->sms.msgdata, octstr_duplicate(name)); > /* <===== MEMORY LEAK?? */ > octstr_append_char(msg->sms.msgdata, WBXML_TOK_END_STR_I); > octstr_append_char(msg->sms.msgdata, WBXML_TOK_END); > } > /* URL */ > if (url != NULL) { > /* PARM with attributes */ > octstr_append_from_hex(msg->sms.msgdata, "87"); > /* NAME=PROXY, VALUE, inline string */ > octstr_append_char(msg->sms.msgdata, WBXML_TOK_NAME_URL); > octstr_append_char(msg->sms.msgdata, WBXML_TOK_VALUE); > octstr_append_char(msg->sms.msgdata, WBXML_TOK_STR_I); > octstr_append(msg->sms.msgdata, octstr_duplicate(url)); > /* <======= MEMORY LEAK?? */ > octstr_append_char(msg->sms.msgdata, WBXML_TOK_END_STR_I); > octstr_append_char(msg->sms.msgdata, WBXML_TOK_END); > } > > >
ota_leak.patch
(application/octet-stream, 1.2 KB)
Index: gw/ota_prov.c
===================================================================
RCS file: /home/cvs/gateway/gw/ota_prov.c,v
retrieving revision 1.11
diff -u -r1.11 ota_prov.c
--- gw/ota_prov.c 9 Dec 2005 12:35:11 -0000 1.11
+++ gw/ota_prov.c 7 Apr 2006 11:52:32 -0000
@@ -484,7 +484,7 @@
octstr_append_char(msg->sms.msgdata, WBXML_TOK_TYPE_URL);
octstr_append_char(msg->sms.msgdata, WBXML_TOK_VALUE);
octstr_append_char(msg->sms.msgdata, WBXML_TOK_STR_I);
- octstr_append(msg->sms.msgdata, octstr_duplicate(url));
+ octstr_append(msg->sms.msgdata, url);
octstr_append_char(msg->sms.msgdata, WBXML_TOK_END_STR_I);
octstr_append_char(msg->sms.msgdata, WBXML_TOK_END);
}
@@ -503,7 +503,7 @@
octstr_append_char(msg->sms.msgdata, WBXML_TOK_NAME_NAME);
octstr_append_char(msg->sms.msgdata, WBXML_TOK_VALUE);
octstr_append_char(msg->sms.msgdata, WBXML_TOK_STR_I);
- octstr_append(msg->sms.msgdata, octstr_duplicate(desc));
+ octstr_append(msg->sms.msgdata, desc);
octstr_append_char(msg->sms.msgdata, WBXML_TOK_END_STR_I);
octstr_append_char(msg->sms.msgdata, WBXML_TOK_END);
}