aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--g10/ChangeLog5
-rw-r--r--g10/exec.c19
2 files changed, 7 insertions, 17 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 73c99ac10..53fc4bcc4 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,8 +1,3 @@
-2006-05-25 Israel G. Lugo <[email protected]> (dshaw)
-
- * exec.c (make_tempdir) [_WIN32]: Modified to properly handle
- arbitrarily long temporary directory paths.
-
2006-05-25 David Shaw <[email protected]>
* keygen.c (gen_dsa): Allow generating DSA2 keys
diff --git a/g10/exec.c b/g10/exec.c
index 2ad0d327c..d99bb5e1e 100644
--- a/g10/exec.c
+++ b/g10/exec.c
@@ -129,21 +129,16 @@ static int make_tempdir(struct exec_info *info)
if(tmp==NULL)
{
#if defined (_WIN32)
- int tmp_siz;
- int len=0;
+ int err;
- /* Poll temp path length */
- tmp_siz=GetTempPath(0,NULL);
- if(tmp_siz)
- {
- tmp=xmalloc(tmp_siz);
- len=GetTempPath(tmp_siz,tmp);
- }
-
- if(len==0)
- tmp=xstrdup("c:\\windows\\temp");
+ tmp=xmalloc(MAX_PATH);
+ err=GetTempPath(MAX_PATH,tmp);
+ if(err==0 || err>MAX_PATH)
+ strcpy(tmp,"c:\\windows\\temp");
else
{
+ int len=strlen(tmp);
+
/* GetTempPath may return with \ on the end */
while(len>0 && tmp[len-1]=='\\')
{