+--- as31-2.3.1/as31/run.c 2005-09-05 12:32:42.000000000 -0400
++++ as31-2.3.1-fixed/as31/run.c 2012-01-11 12:30:19.000000000 -0500
+@@ -39,8 +39,8 @@
+ char *incLineBuffer=NULL;
+ int incSizeBuf=0;
+ FILE* includeFile=NULL;
++ int fd;
+
+- uid_t uid;
+ /* first, figure out all the file names */
+
+ dashl = lst;
+@@ -95,11 +95,18 @@
+ }
+ }
+
+- uid = geteuid();
+- sprintf(tmpName,"/tmp/as31-%i-%ld.asm",uid,random());
+- fin = fopen(tmpName, "w");
++ sprintf(tmpName,"/tmp/as31-XXXXXX.asm");
++ fd = mkstemps(tmpName, 4);
++ if (fd == -1) {
++ mesg_f("Cannot create temp file\n");
++ if (outfile) free(outfile);
++ if (lstfile) free(lstfile);
++ return -1;
++ }
++ fin = fdopen(fd, "w");
+ if (fin == NULL) {
+ mesg_f("Cannot open temp file: %s\n",tmpName);
++ close(fd);
+ if (outfile) free(outfile);
+ if (lstfile) free(lstfile);
+ return -1;