SDP memory leak?
Hello,
I have a question about "bnep_sdp_search()" from "bluez-pan-1.1/pand/sdp.c" (see below for the code). If I see it correctly, the memory for "sdp_list_t *srch, *rsp" is allocated by "sdp_service_search_req()". But "bnep_sdp_search()" accesses the pointer "rsp" after it has done "sdp_close()".
So my question is: 'Who will ever free the memory allocated at "rsp" and when?'
I quite new to this, so I probably have missed something. So sorry if this is a stupid one :-).
Kind regards
Stefan
<CODE>
int bnep_sdp_search(bdaddr_t *src, bdaddr_t *dst, uint16_t service) {
sdp_list_t *srch, *rsp = NULL;
sdp_session_t *s;
uuid_t svclass;
int err;
switch (service) {
case BNEP_SVC_PANU:
sdp_uuid16_create(&svclass, PANU_SVCLASS_ID);
break;
case BNEP_SVC_NAP:
sdp_uuid16_create(&svclass, NAP_SVCLASS_ID);
break;
case BNEP_SVC_GN:
sdp_uuid16_create(&svclass, GN_SVCLASS_ID);
break;
}
srch = sdp_list_append(NULL, &svclass);
s = sdp_connect(src, dst, 0);
if (!s) {
syslog(LOG_ERR, "Failed to connect to the SDP server. %s(%d)",
strerror(errno), errno);
return 0;
}
err = sdp_service_search_req(s, srch, 1, &rsp);
sdp_close(s); /* Assume that search is successeful
* if at least one record is found */
if (!err && sdp_list_len(rsp))
return 1;
return 0;
} </CODE>
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel
Marcel Holtmann
maintainerHi Stefan,
Quoted 11 lines
I have a question about "
bnep_sdp_search()" from "bluez-pan-1.1/pand/sdp.c" (see below for the code).
If I see it correctly, the memory for "sdp_list_t*srch, *rsp" is allocated by "sdp_service_search_req()".
But "bnep_sdp_search()" accesses the pointer "rsp" after it has done "sdp_close()".
So my question is: 'Who will ever free the memory allocated at "rsp" and when?'I quite new to this, so I probably have missed something. So sorry if this is a stupid one :-).
no, I think you are right. I expect more memory leaks in the SDP code. We need some people to check this and send me patches.
Regards
Marcel
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel
Hi!
Quoted 4 lines · Marcel Holtmann
no, I think you are right. I expect more memory leaks in the SDP code. We need some people to check this and send me patches.
Well then, I just figured out (in my own TestApp based on "bnep_sdp_search()") that it simply doesn't work like this. I propose to do "sdp_close()" as the last sdp_* call (as in the code below). Same with dund. So there might be no memory leak but an illegal pointer access. One has to correct "pand/sdp.c" and "dund/sdp.c".
Regards
Stefan
<CODE>
int bnep_sdp_search(bdaddr_t *src, bdaddr_t *dst, uint16_t service) {
sdp_list_t *srch, *rsp = NULL;
sdp_session_t *s;
uuid_t svclass;
int err, res;
switch (service) {
case BNEP_SVC_PANU:
sdp_uuid16_create(&svclass, PANU_SVCLASS_ID);
break;
case BNEP_SVC_NAP:
sdp_uuid16_create(&svclass, NAP_SVCLASS_ID);
break;
case BNEP_SVC_GN:
sdp_uuid16_create(&svclass, GN_SVCLASS_ID);
break;
}
srch = sdp_list_append(NULL, &svclass);
s = sdp_connect(src, dst, 0);
if (!s) {
syslog(LOG_ERR, "Failed to connect to the SDP server. %s(%d)",
strerror(errno), errno);
return 0;
}
err = sdp_service_search_req(s, srch, 1, &rsp);
res = sdp_list_len(rsp);
sdp_close(s); /* Assume that search is successeful
* if at least one record is found */
if (!err && res)
return 1;
return 0;
}
</CODE>
Marcel Holtmann
maintainerHi Stefan,
Quoted 5 lines
Well then, I just figured out (in my own TestApp based on "
bnep_sdp_search()") that it simply doesn't work like this. I propose to do "sdp_close()" as the last sdp_* call (as in the code below). Same with dund. So there might be no memory leak but an illegal pointer access. One has to correct "pand/sdp.c" and "dund/sdp.c".
I am very busy with some other problems and I am not the expert when it comes to the SDP code. Write a patch that I can apply and show me that it is the right way to do it. Be careful with the other return pathes in that functions.
Regards
Marcel
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel
The sdp library is free (I think) of memory leaks, thanks to the wonders of valgrind: http://valgrind.kde.org.
Quoted 33 lines · Marcel Holtmann
Hi Stefan,
Quoted 11 lines
I have a question about "
bnep_sdp_search()" from "bluez-pan-1.1/pand/sdp.c" (see below for the code).
If I see it correctly, the memory for "sdp_list_t*srch, *rsp" is allocated by "sdp_service_search_req()".
But "bnep_sdp_search()" accesses the pointer "rsp" after it has done "sdp_close()".
So my question is: 'Who will ever free the memory allocated at "rsp" and when?'I quite new to this, so I probably have missed something. So sorry if this is a stupid one :-).
no, I think you are right. I expect more memory leaks in the SDP code. We need some people to check this and send me patches.
Regards
Marcel
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel
Signature · 2 lines
Stephen Crane, Rococo Software Ltd. http://www.rococosoft.com [email protected] +353-1-6601315 (ext 209)
Marcel Holtmann
maintainerHi Steve,
Quoted 2 lines
The sdp library is free (I think) of memory leaks, thanks to the wonders of valgrind: http://valgrind.kde.org.
would you also take care of the tools in bluez-utils that uses the SDP library?
Regards
Marcel
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel
Hi Marcel, Stefan,
Quoted 7 lines · Marcel Holtmann
Hi Steve,
Quoted 2 lines
The sdp library is free (I think) of memory leaks, thanks to the wonders of valgrind: http://valgrind.kde.org.
would you also take care of the tools in bluez-utils that uses the SDP library?
I have just committed changes to pand's service registration. The CVS diff should show what is required to fix this in the other applications. (Note: sdptool also cleans up properly in its "add" subcommands.)
Unfortunately I haven't time to do the others at the moment but this should be a start for others. (Send in the patches!)
Regards,
Steve
Signature · 2 lines
Stephen Crane, Rococo Software Ltd. http://www.rococosoft.com [email protected] +353-1-6601315 (ext 209)
Marcel Holtmann
maintainerHi Steve,
Quoted 3 lines
I have just committed changes to pand's service registration. The CVS diff should show what is required to fix this in the other applications. (Note: sdptool also cleans up properly in its "add" subcommands.)
many thanks.
Quoted 2 lines
Unfortunately I haven't time to do the others at the moment but this should be a start for others. (Send in the patches!)
Stefan and others, now it is your turn to get involved ;)
Regards
Marcel
-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click
_______________________________________________
Bluez-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel