Browse code

Attempt to handle foreign character sets

git-svn: trunk@1611

Nigel Horne authored on 2005/06/12 05:58:36
Showing 1 changed files
... ...
@@ -15,7 +15,7 @@
15 15
  *  along with this program; if not, write to the Free Software
16 16
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 17
  */
18
-static	char	const	rcsid[] = "$Id: blob.c,v 1.42 2005/05/18 20:29:45 nigelhorne Exp $";
18
+static	char	const	rcsid[] = "$Id: blob.c,v 1.43 2005/06/11 20:58:36 nigelhorne Exp $";
19 19
 
20 20
 #if HAVE_CONFIG_H
21 21
 #include "clamav-config.h"
... ...
@@ -410,6 +410,15 @@ fileblobSetFilename(fileblob *fb, const char *dir, const char *filename)
410 410
 #if	defined(C_LINUX) || defined(C_BSD) || defined(HAVE_MKSTEMP) || defined(C_SOLARIS) || defined(C_CYGWIN) || defined(C_QNX6)
411 411
 	cli_dbgmsg("fileblobSetFilename: mkstemp(%s)\n", fullname);
412 412
 	fd = mkstemp(fullname);
413
+	if((fd < 0) && (errno == EINVAL)) {
414
+		/*
415
+		 * This happens with some Linux flavours when (mis)handling
416
+		 * filenames with foreign characters
417
+		 */
418
+		snprintf(fullname, sizeof(fullname), "%s/clamavtmpXXXXXXXXXXXXX", dir);
419
+		cli_dbgmsg("fileblobSetFilename: retry as mkstemp(%s)\n", fullname);
420
+		fd = mkstemp(fullname);
421
+	}
413 422
 #else
414 423
 	cli_dbgmsg("fileblobSetFilename: mktemp(%s)\n", fullname);
415 424
 	(void)mktemp(fullname);