$NetBSD: patch-am,v 1.1 2005/10/05 11:45:46 salo Exp $ Fix for SA17008, from Gentoo. --- parallel.c.orig 1995-08-16 20:22:11.000000000 +0200 +++ parallel.c 2005-10-05 13:25:40.000000000 +0200 @@ -586,6 +586,8 @@ * SIDE EFFECTS: none * *===========================================================================*/ +/* internal hook into the ReadFrame function */ +void _ReadFrame(MpegFrame *frame, char *fileName, FILE *fileHook, char *conversion, boolean addPath); void GetRemoteFrame(frame, frameNumber) MpegFrame *frame; @@ -615,8 +617,13 @@ if ( frameNumber != -1 ) { if ( separateConversion ) { - sprintf(fileName, "/tmp/foobar%d", machineNumber); - filePtr = fopen(fileName, "wb"); + int fd; + snprintf(fileName, sizeof(fileName), "/tmp/mpeg_encode_foobar%dXXXXXX", machineNumber); + fd = mkstemp(fileName); + if (fd == -1 || (filePtr = fdopen(fd, "wb")) == NULL) { + perror("ERROR: mpeg_encode->GetRemoteFrame"); + exit(1); + } /* read in stuff, SafeWrite to file, perform local conversion */ do { @@ -628,10 +635,12 @@ fwrite(smallBuffer, 1, numBytes, filePtr); } while ( numBytes == 1000 ); fflush(filePtr); - fclose(filePtr); + rewind(filePtr); /* now do slave conversion */ - ReadFrame(frame, fileName, slaveConversion, FALSE); + _ReadFrame(frame, NULL, filePtr, slaveConversion, FALSE); + /* _ReadFrame() will close the file pointer for us */ + /* fclose(filePtr); */ } else { Frame_AllocYCC(frame);