nixpkgs/pkgs/tools/text/dos2unix/dos2unix-3.1-segfault.patch
Rob Vermaas a6cd7eb8a1 dos2unix and unix2dos provided by griswold
svn path=/nixpkgs/trunk/; revision=19409
2010-01-13 21:09:55 +00:00

94 lines
2.2 KiB
Diff

--- dos2unix-3.1/dos2unix.c.segf Thu Jan 17 17:27:42 2002
+++ dos2unix-3.1/dos2unix.c Thu Jan 17 17:28:07 2002
@@ -147,9 +147,9 @@
* RetVal: NULL if failure
* file stream otherwise
*/
-FILE* OpenOutFile(char *ipFN)
+FILE* OpenOutFile(int fd)
{
- return (fopen(ipFN, W_CNTRL));
+ return (fdopen(fd, W_CNTRL));
}
@@ -260,14 +260,17 @@
char TempPath[16];
struct stat StatBuf;
struct utimbuf UTimeBuf;
+ int fd;
/* retrieve ipInFN file date stamp */
if ((ipFlag->KeepDate) && stat(ipInFN, &StatBuf))
RetVal = -1;
- strcpy (TempPath, "./d2utmp");
- strcat (TempPath, "XXXXXX");
- mkstemp (TempPath);
+ strcpy (TempPath, "./d2utmpXXXXXX");
+ if((fd=mkstemp (TempPath))<0) {
+ perror("Failed to open output temp file");
+ RetVal = -1;
+ }
#ifdef DEBUG
fprintf(stderr, "dos2unix: using %s as temp file\n", TempPath);
@@ -278,7 +281,7 @@
RetVal = -1;
/* can open out file? */
- if ((!RetVal) && (InF) && ((TempF=OpenOutFile(TempPath)) == NULL))
+ if ((!RetVal) && (InF) && ((TempF=OpenOutFile(fd)) == NULL))
{
fclose (InF);
RetVal = -1;
@@ -295,6 +298,8 @@
/* can close out file? */
if ((TempF) && (fclose(TempF) == EOF))
RetVal = -1;
+ if(fd>=0)
+ close(fd);
if ((!RetVal) && (ipFlag->KeepDate))
{
@@ -340,14 +345,17 @@
char TempPath[16];
struct stat StatBuf;
struct utimbuf UTimeBuf;
+ int fd;
/* retrieve ipInFN file date stamp */
if ((ipFlag->KeepDate) && stat(ipInFN, &StatBuf))
RetVal = -1;
- strcpy (TempPath, "./u2dtmp");
- strcat (TempPath, "XXXXXX");
- mkstemp (TempPath);
+ strcpy (TempPath, "./u2dtmpXXXXXX");
+ if((fd=mkstemp (TempPath))<0) {
+ perror("Failed to open output temp file");
+ RetVal = -1;
+ }
#ifdef DEBUG
fprintf(stderr, "dos2unix: using %s as temp file\n", TempPath);
@@ -358,7 +366,7 @@
RetVal = -1;
/* can open out file? */
- if ((!RetVal) && (InF) && ((TempF=OpenOutFile(TempPath)) == NULL))
+ if ((!RetVal) && (InF) && ((TempF=OpenOutFile(fd)) == NULL))
{
fclose (InF);
RetVal = -1;
@@ -376,6 +384,9 @@
if ((TempF) && (fclose(TempF) == EOF))
RetVal = -1;
+ if(fd>=0)
+ close(fd);
+
if ((!RetVal) && (ipFlag->KeepDate))
{
UTimeBuf.actime = StatBuf.st_atime;