[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