Hi! On Wed, Sep 01, 1999 at 12:49:27PM +0200, Mark Weinem wrote: > I'm running GnuPG 0.9.10-2. Gpg is the default in ~/.muttrc, and gpgm > is a symbolic link to gpg. But sending my public key or encrypting > still doesn't work. Mutt always asks for a key ID but every input > seems to be wrong. (Marcus Pallinger earlier reported the same bug) Indeed it was a bug in mutt. Please apply the attached patch by changing in the source directory, "patch -p0 < patch-1.0pre2.gt.strtok.1", and then recompile mutt by doing "make". Gero
--- gnupgparse.c.orig Tue Sep 7 10:59:35 1999 +++ gnupgparse.c Tue Sep 7 10:46:17 1999 @@ -149,14 +149,16 @@ #endif - keylist = safe_strdup(uids); - for(cp = strtok(keylist, " "); cp ; cp = strtok(NULL, " ")) + if ((keylist = safe_strdup(uids)) != NULL) { - snprintf(tmpcmd, sizeof(tmpcmd), "%s %s", - cmd, cp); - strcpy(cmd, tmpcmd); + for(cp = strtok(keylist, " "); cp ; cp = strtok(NULL, " ")) + { + snprintf(tmpcmd, sizeof(tmpcmd), "%s %s", + cmd, cp); + strcpy(cmd, tmpcmd); + } + safe_free((void **) &keylist); } - safe_free((void **) &keylist); return mutt_create_filter_fd(cmd, pgpin, pgpout, pgperr, pgpinfd, pgpoutfd, pgperrfd); } --- pgpinvoke.c.orig Tue Sep 7 11:29:34 1999 +++ pgpinvoke.c Tue Sep 7 11:18:56 1999 @@ -291,15 +291,16 @@ FREE(&pubring); FREE(&secring); FREE(&binary); FREE(&_fname); - keylist = safe_strdup(uids); - - for(cp = strtok(keylist, " "); cp ; cp = strtok(NULL, " ")) + if ((keylist = safe_strdup(uids)) != NULL) { - snprintf(tmpcmd, sizeof(tmpcmd), "%s -r %s", - cmd, cp); - strcpy(cmd, tmpcmd); + for(cp = strtok(keylist, " "); cp ; cp = strtok(NULL, " ")) + { + snprintf(tmpcmd, sizeof(tmpcmd), "%s -r %s", + cmd, cp); + strcpy(cmd, tmpcmd); + } + safe_free((void **) &keylist); } - safe_free((void **) &keylist); return mutt_create_filter_fd(cmd, pgpin, pgpout, pgperr, pgpinfd, pgpoutfd, pgperrfd); @@ -613,14 +614,16 @@ PgpSignAs? "-u " : "", PgpSignAs? PgpSignAs : "" ); - keylist = safe_strdup(uids); - for(cp = strtok(keylist, " "); cp ; cp = strtok(NULL, " ")) + if ((keylist = safe_strdup(uids)) != NULL) { - snprintf(tmpcmd, sizeof(tmpcmd), "%s -r %s", - cmd, cp); - strcpy(cmd, tmpcmd); + for(cp = strtok(keylist, " "); cp ; cp = strtok(NULL, " ")) + { + snprintf(tmpcmd, sizeof(tmpcmd), "%s -r %s", + cmd, cp); + strcpy(cmd, tmpcmd); + } + safe_free((void **) &keylist); } - safe_free((void **) &keylist); snprintf(tmpcmd, sizeof(tmpcmd), "%s %s", cmd, _fname); strcpy(cmd, tmpcmd);