[Mapserver-dev] [PATCH] mapswf and mappdf memory leaks
Mladen Turk
mturk at apache.org
Fri May 28 13:28:02 EDT 2004
This is a multi-part message in MIME format.
------=_NextPart_000_0064_01C444E9.E29BDA30
Content-Type: multipart/mixed;
boundary="----=_NextPart_001_0065_01C444E9.E29BDA30"
------=_NextPart_001_0065_01C444E9.E29BDA30
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
Hi all,
The patch resolves memory leaks in mapswf and mappdf caused by multiple
strdup's on a single variable (driver).
Interesting that the code (using const char *, instead strdup) already
exists in a part of mapswf.
MT.
------=_NextPart_001_0065_01C444E9.E29BDA30
Content-Type: text/plain;
name="swf_pdf_patch.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="swf_pdf_patch.txt"
Index: mapswf.c
===================================================================
RCS file: /data2/cvsroot/mapserver/mapswf.c,v
retrieving revision 1.36
diff -u -r1.36 mapswf.c
--- mapswf.c 11 May 2004 13:54:29 -0000 1.36
+++ mapswf.c 28 May 2004 06:25:41 -0000
@@ -17,6 +17,8 @@
#include <assert.h>
#if !defined(_WIN32)
#include <zlib.h>
+#else
+#include "zlib.h"
#endif
#include "map.h"
@@ -824,7 +826,7 @@
{
imageObj *image = NULL;
- char *driver = strdup("GD/GIF");
+ const char *driver = "GD/GIF";
assert( strcasecmp(format->driver,"SWF") == 0 );
image = (imageObj *)calloc(1,sizeof(imageObj));
@@ -875,19 +877,19 @@
else
{
#ifdef USE_GD_GIF
- driver = strdup("GD/GIF");
+ driver = "GD/GIF";
#else
#ifdef USE_GD_PNG
- driver = strdup("GD/PNG");
+ driver = "GD/PNG";
#else
#ifdef USE_GD_JPEG
- driver = strdup("GD/JPEG");
+ driver = "GD/JPEG";
#else
#ifdef USE_GD_WBMP
- driver = strdup("GD/WBMP");
+ driver = "GD/WBMP";
#endif
#endif
@@ -2858,23 +2860,23 @@
imageObj *imagetmp;
//int nTmp = -1;
SWFShape oShape;
- char *driver = strdup("GD/GIF");
+ const char *driver = "GD/GIF";
int bFreeImage = 0;
#ifdef USE_GD_GIF
- driver = strdup("GD/GIF");
+ driver = "GD/GIF";
#else
#ifdef USE_GD_PNG
- driver = strdup("GD/PNG");
+ driver = "GD/PNG";
#else
#ifdef USE_GD_JPEG
- driver = strdup("GD/JPEG");
+ driver = "GD/JPEG";
#else
#ifdef USE_GD_WBMP
- driver = strdup("GD/WBMP");
+ driver = "GD/WBMP";
#endif
#endif
Index: mappdf.c
===================================================================
RCS file: /data2/cvsroot/mapserver/mappdf.c,v
retrieving revision 1.22
diff -u -r1.22 mappdf.c
--- mappdf.c 8 May 2003 04:54:02 -0000 1.22
+++ mappdf.c 28 May 2004 06:26:41 -0000
@@ -128,7 +128,7 @@
imageObj *oImage = NULL;
PDF *pdf = NULL;
- char *driver = strdup("GD/GIF");
+ const char *driver = "GD/GIF";
assert( strcasecmp(format->driver,"PDF") == 0 );
@@ -186,19 +186,19 @@
else
{
#ifdef USE_GD_GIF
- driver = strdup("GD/GIF");
+ driver = "GD/GIF";
#else
#ifdef USE_GD_PNG
- driver = strdup("GD/PNG");
+ driver = "GD/PNG";
#else
#ifdef USE_GD_JPEG
- driver = strdup("GD/JPEG");
+ driver = "GD/JPEG";
#else
#ifdef USE_GD_WBMP
- driver = strdup("GD/WBMP");
+ driver = "GD/WBMP";
#endif
#endif
@@ -1452,7 +1452,7 @@
PDF *pdf = NULL;
imageObj *image_tmp = NULL;
int iReq = -1;
- char *driver = strdup("GD/GIF");
+ const char *driver = "GD/GIF";
char *jpeg = NULL;
int nLength = 0, nResult = 0;
//char ttt[200];
@@ -1460,19 +1460,19 @@
int bRasterOutput = 0;
#ifdef USE_GD_GIF
- driver = strdup("GD/GIF");
+ driver = "GD/GIF";
#else
#ifdef USE_GD_PNG
- driver = strdup("GD/PNG");
+ driver = "GD/PNG";
#else
#ifdef USE_GD_JPEG
- driver = strdup("GD/JPEG");
+ driver = "GD/JPEG";
#else
#ifdef USE_GD_WBMP
- driver = strdup("GD/WBMP");
+ driver = "GD/WBMP";
#endif
#endif
------=_NextPart_001_0065_01C444E9.E29BDA30--
------=_NextPart_000_0064_01C444E9.E29BDA30
Content-Type: application/x-pkcs7-signature;
name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="smime.p7s"
MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJADCCAogw
ggHxoAMCAQICAwxGPTANBgkqhkiG9w0BAQQFADBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh
d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVt
YWlsIElzc3VpbmcgQ0EwHhcNMDQwNTA4MTc0OTIyWhcNMDUwNTA4MTc0OTIyWjBpMR8wHQYDVQQD
ExZUaGF3dGUgRnJlZW1haWwgTWVtYmVyMSUwIwYJKoZIhvcNAQkBFhZtbGFkZW4udHVya0BnaXNk
YXRhLmhyMR8wHQYJKoZIhvcNAQkBFhBtdHVya0BhcGFjaGUub3JnMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQDDFpTL3QpMpzZNX4hMRwNoTAcJtSF18PnJf3oUryvGmggiy9cbJAuScvfVku2R
DDeBdJaVqDb83nYQydW6JvZI7m2oKApNRV9veadN/T7Fq81QcSBAQgXRyNWCMyl832zOxDrZNchH
kgQzkm67IMHXxDd8LYAxAj8eFFLuV+g29QIDAQABo0UwQzAzBgNVHREELDAqgRZtbGFkZW4udHVy
a0BnaXNkYXRhLmhygRBtdHVya0BhcGFjaGUub3JnMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEE
BQADgYEAtF/h4HA4Zt+3J1a3P0y4Yllqa3srAR+oHJMpQjFLSoUYHkwBQW7iuCWCuzthoIbW/Wuk
g9ww/RSSCJUOFuHham7kClwbWFoRZL9i61L3vfoM3AMKVOj2T0JmoAV+4Ib6lGSaX7DywGbZB5qd
9gpfITF2Cl56XdZ8EXHA2kj2I9cwggMtMIIClqADAgECAgEAMA0GCSqGSIb3DQEBBAUAMIHRMQsw
CQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAY
BgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2Vz
IERpdmlzaW9uMSQwIgYDVQQDExtUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgQ0ExKzApBgkqhkiG
9w0BCQEWHHBlcnNvbmFsLWZyZWVtYWlsQHRoYXd0ZS5jb20wHhcNOTYwMTAxMDAwMDAwWhcNMjAx
MjMxMjM1OTU5WjCB0TELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UE
BxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlm
aWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt
YWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUuY29tMIGfMA0G
CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUadfUsJRkW3HpR9gMUbbqcpGwhF59LQ2PexLfhSV1KHQ6
QixjJ5+Ve0vvfhmHHYbqo925zpZkGsIUbkSsfOaP6E0PcR9AOKYAo4d49vmUhl6t6sBeduvZFKNd
bnp8DKVLVX8GGSl/npom1Wq7OCQIapjHsdqjmJH9edvlWsQcuQIDAQABoxMwETAPBgNVHRMBAf8E
BTADAQH/MA0GCSqGSIb3DQEBBAUAA4GBAMfskn5O+PWWpWdiKqTwTRFg0G+NYFhhrCa7UjVcCM8w
+6hKloofYkIjjBcP9LpknBesRynfnZhe0mxgcVyirNx54+duAEcftQ0o6AKd5Jr9E/Sm2Xyx+Nxf
IyYJkYBz0BQb3kOpgyXy5pwvFcr+pquKB3WLDN1RhGvk+NHOd6KBMIIDPzCCAqigAwIBAgIBDTAN
BgkqhkiG9w0BAQUFADCB0TELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAG
A1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2Vy
dGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZy
ZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUuY29tMB4X
DTAzMDcxNzAwMDAwMFoXDTEzMDcxNjIzNTk1OVowYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRo
YXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVl
bWFpbCBJc3N1aW5nIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEpjxVc1X7TrnKmVoe
aMB1BHCd3+n/ox7svc31W/Iadr1/DDph8r9RzgHU5VAKMNcCY1osiRVwjt3J8CuFWqo/cVbLrzwL
B+fxH5E2JCoTzyvV84J3PQO+K/67GD4Hv0CAAmTXp6a7n2XRxSpUhQ9IBH+nttE8YQRAHmQZcmC3
+wIDAQABo4GUMIGRMBIGA1UdEwEB/wQIMAYBAf8CAQAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDov
L2NybC50aGF3dGUuY29tL1RoYXd0ZVBlcnNvbmFsRnJlZW1haWxDQS5jcmwwCwYDVR0PBAQDAgEG
MCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFQcml2YXRlTGFiZWwyLTEzODANBgkqhkiG9w0BAQUF
AAOBgQBIjNFQg+oLLswNo2asZw9/r6y+whehQ5aUnX9MIbj4Nh+qLZ82L8D0HFAgk3A8/a3hYWLD
2ToZfoSxmRsAxRoLgnSeJVCUYsfbJ3FXJY3dqZw5jowgT2Vfldr394fWxghOrvbqNOUQGls1TXfj
ViF4gtwhGTXeJLHTHUb/XV9lTzGCAs8wggLLAgEBMGkwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT
HFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBG
cmVlbWFpbCBJc3N1aW5nIENBAgMMRj0wCQYFKw4DAhoFAKCCAbwwGAYJKoZIhvcNAQkDMQsGCSqG
SIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDQwNTI4MTcyNzU5WjAjBgkqhkiG9w0BCQQxFgQUxqxd
WqdNlEKKpJzEOukro0BbZHowZwYJKoZIhvcNAQkPMVowWDAKBggqhkiG9w0DBzAOBggqhkiG9w0D
AgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwBwYFKw4DAhowCgYI
KoZIhvcNAgUweAYJKwYBBAGCNxAEMWswaTBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3Rl
IENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWls
IElzc3VpbmcgQ0ECAwxGPTB6BgsqhkiG9w0BCRACCzFroGkwYjELMAkGA1UEBhMCWkExJTAjBgNV
BAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25h
bCBGcmVlbWFpbCBJc3N1aW5nIENBAgMMRj0wDQYJKoZIhvcNAQEBBQAEgYC+MjWNKvApjd5kOisv
XlD8uLODTmBPqo5JWKRkapgF1MGG9eP2zqaHOovC2oJiaydAXqD1j25EetmUVn/caOEbqX56c0KW
F8o+j1SNCRaQsbMM4dwFIhCnFxXf7dPTP4KhTb1MoJUXsyXQzkE+6rf4s1Zp0ubZHAyaW0bg2Ize
TAAAAAAAAA==
------=_NextPart_000_0064_01C444E9.E29BDA30--
More information about the mapserver-dev
mailing list