X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f X-Recipient: djgpp AT delorie DOT com Message-ID: <5A5217F0.6030506@gmx.de> Date: Sun, 07 Jan 2018 13:52:00 +0100 From: "Juan Manuel Guerrero (juan DOT guerrero AT gmx DOT de) [via djgpp AT delorie DOT com]" User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.13) Gecko/20101206 SUSE/3.1.7 Thunderbird/3.1.7 MIME-Version: 1.0 To: djgpp AT delorie DOT com Subject: Re: smake-1.2.5 References: In-Reply-To: Content-Type: multipart/mixed; boundary="------------050100070406050505010309" X-Provags-ID: V03:K0:LUN3cQC9AZgjfMEKYn2T/JWCLxepZDcNZ3mGHu6JWBKVCxmrX5Q L3XXc8Aooiw5vsbNVApf5DL+0nUFcdQmJfsSWRvIrrz/W8xqQsC7n5YgkV1qN5RoDqU53qV 20mzbVf5/4ygpD0eT9DdgtbuQh0XHIubYzIhogkFKUsk4yjvC/nfWvECLPbA/uo3Lx8xuFT CGqHiiiLGM+w+BOf+m/+w== X-UI-Out-Filterresults: notjunk:1;V01:K0:CvW0j+iNg50=:qrDSRcIKXiL/3wzPI2ncd5 Yt70rcVh0lkF6ZG5dhunIii6yYcjPHIl2ycUxCYBur3ps2RMQwhF+qIkbo5gYqNGQMsD4Ub6/ W4PEZJwW7LrmABU4JyJA7U/jCUzScmbiQUPF9hfQyDemEI12ArVFvUPkhpHqyFRXUV4M0kpUG uMW7CzkConBzSMpvSpx/m37vjIXamhS+jSe0f1wC/GNpjEsw9GogJuuu5ZZkjwAn/eQvbX8SZ KzBIiuE3qJD1kpCIS2hze8/VtWYyz2OCCX/C+XxQ1sLgxMjYCIBy6Obv82a5cmpI2lY/T9kvM mghDAJxpqlKBZvd3sUGy7F9Sw6234/JqMgTvE0SGVuzSi2DtIq+8wTxCLiq7bjXWV15aDbubK /Lsi7bZfi65uRbysOAr1LtDau/HwxLtSaj0bhaeP+LymCcOM7diW2CfZuNZDccr+IlU/i2LEf PHGiGCPQEU/Y8JoR4pMb1CYYxii01NxCApd1lIQqn7ynUiafj/T9JK7ZuNJYeqRmyViuh3sHy PZUc54qsyhRz1gvgk0cn/blqwCeklakj+Jd2amkqtKxln6ioSEMX9Kglrzjao3ZRUQR/4Rf+N zVV/X1CpY5o71MAyu2Gn8105PUbU1nl/uNHd5i7lx808u2oArWlo0M55YPwRQM165GTHTX0RF LOQkjvns9kiQiA1dNXgqIWROtUXQwAno2dkKuLm20mKiGa9IQxoi6iYqaUJnFgEaW0PMPB2j6 FXIG94x0mln6AW/0qdDC0tk5nk+n6j0QzuzKPYrIzIs6Hd4HOypSZ1PtxCZ+rbgSXc0qQdcsM 5NHzT3pHJXeBsPfH+4Se9Arhpgtow== Reply-To: djgpp AT delorie DOT com This is a multi-part message in MIME format. --------------050100070406050505010309 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Am 06.01.2018 18:19, schrieb david peterac (peters DOT al AT gmx DOT com) [via djgpp AT delorie DOT com]: > Dear, > > Can You explain me log of compiled smake-1.2.5 with djdev 2.05 ? > > D:\djgpp\src\cdrtools\smake-1.2.5\psmake>sh > sh-2.05b$ ./smake > free: memory fouled > Exiting due to signal SIGABRT > Raised at eip=0001d945 > eax=000c7924 ebx=00000120 ecx=00000011 edx=00000000 esi=000c8bdc > edi=000c7a40 > ebp=00000000 esp=000c7910 program=D:\djgpp\src\cdrtools\SMAKE-~1.5\psmake > \smake > cs: sel=01ff base=02ad0000 limit=000cffff > ds: sel=0207 base=02ad0000 limit=000cffff > es: sel=0207 base=02ad0000 limit=000cffff > fs: sel=01d7 base=0000c810 limit=0000ffff > gs: sel=0217 base=00000000 limit=0010ffff > ss: sel=0207 base=02ad0000 limit=000cffff > App stack: [000c8b68..00048b68] Exceptn stack: [00048ab4..00046b74] > > Call frame traceback EIPs: > 0x0001d945 ___djgpp_traceback_exit+101 > sh-2.05b$ symify.exe ./smake > sh-2.05b$ > > Thanks David There is a bug in searchfileinpath. Here the variable path is used as pointer to allocated memory by strdup and at the same time as incremental counter along the path. This has the consecuence that later when path is passed to free, path no longer points to the beginning of the allocated memory. This is a bug of the DJGPP port of this program. The patch below will fix the issue. Regards, Juan M. Guerrero diff -aprNU5 smake-1.2.5.orig/lib/searchinpath.c smake-1.2.5/lib/searchinpath.c --- smake-1.2.5.orig/lib/searchinpath.c 2010-11-18 22:49:52 +0000 +++ smake-1.2.5/lib/searchinpath.c 2018-01-07 02:20:18 +0000 @@ -125,10 +125,11 @@ searchfileinpath(name, mode, file_mode, #ifdef __DJGPP__ path = strdup(path); if (path == NULL) return (NULL); strbs2s(path); /* PATH under DJGPP can contain both slashes */ + pn = path; /* Remember PATH pointer */ #endif /* * A PATH name search should lead us to the path under which we * called the binary, but not necessarily to the install path as @@ -146,11 +147,11 @@ searchfileinpath(name, mode, file_mode, if ((np = searchonefile(name, mode, (file_mode & SIP_PLAIN_FILE) != 0, xn, nbuf, np, ep)) != NULL) { #ifdef __DJGPP__ - free(path); + free(pn); #endif seterrno(oerrno); return (np); } if (err == 0) { @@ -161,11 +162,11 @@ searchfileinpath(name, mode, file_mode, if (*path == '\0') break; path++; } #ifdef __DJGPP__ - free(path); + free(pn); #endif if (err) seterrno(err); else seterrno(oerrno); --------------050100070406050505010309 Content-Type: text/x-patch; name="smake.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="smake.patch" diff -aprNU5 smake-1.2.5.orig/lib/searchinpath.c smake-1.2.5/lib/searchinpath.c --- smake-1.2.5.orig/lib/searchinpath.c 2010-11-18 22:49:52 +0000 +++ smake-1.2.5/lib/searchinpath.c 2018-01-07 02:20:18 +0000 @@ -125,10 +125,11 @@ searchfileinpath(name, mode, file_mode, #ifdef __DJGPP__ path = strdup(path); if (path == NULL) return (NULL); strbs2s(path); /* PATH under DJGPP can contain both slashes */ + pn = path; /* Remember PATH pointer */ #endif /* * A PATH name search should lead us to the path under which we * called the binary, but not necessarily to the install path as @@ -146,11 +147,11 @@ searchfileinpath(name, mode, file_mode, if ((np = searchonefile(name, mode, (file_mode & SIP_PLAIN_FILE) != 0, xn, nbuf, np, ep)) != NULL) { #ifdef __DJGPP__ - free(path); + free(pn); #endif seterrno(oerrno); return (np); } if (err == 0) { @@ -161,11 +162,11 @@ searchfileinpath(name, mode, file_mode, if (*path == '\0') break; path++; } #ifdef __DJGPP__ - free(path); + free(pn); #endif if (err) seterrno(err); else seterrno(oerrno); --------------050100070406050505010309--