git-svn: trunk@1611
Nigel Horne authored on 2005/06/12 05:58:36... | ... |
@@ -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); |