aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.in2
-rw-r--r--NEWS9
-rw-r--r--uid.c85
3 files changed, 55 insertions, 41 deletions
diff --git a/Makefile.in b/Makefile.in
index cfc7db7a..31e69ff8 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -4,7 +4,7 @@
# So just uncomment all the lines marked QNX.
PACKAGE = fetchmail
-VERSION = 5.2.4
+VERSION = 5.2.5
SUBDIRS = @INTLSUB@ @POSUB@
diff --git a/NEWS b/NEWS
index 16e501a9..8dc6f564 100644
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,15 @@ package will have two security verifications instead of one...
(The `lines' figures total .c, .h, .l, and .y files under version control.)
+fetchmail-5.2.5 (Mon Jan 31 02:02:48 EST 2000), 18445 lines:
+
+* Fixed bugs in BSMTP generation reported by Jaap Lutz.
+* Make fetchmailconf better at handling backslashes in usernames
+ and passwords.
+* Jochen Hayeek's patch to handle spaces in UID usernames.
+
+There are 279 people on fetchmail-friends and 497 on fetchmail-announce.
+
fetchmail-5.2.4 (Mon Jan 17 02:37:58 EST 2000), 18445 lines:
* Fix bug introduced in 5.2.2 that stopped --syslog from working.
diff --git a/uid.c b/uid.c
index 8b6777b6..9017ebbd 100644
--- a/uid.c
+++ b/uid.c
@@ -113,54 +113,59 @@ void initialize_saved_lists(struct query *hostlist, const char *idfile)
while (fgets(buf, POPBUFSIZE, tmpfp) != (char *)NULL)
{
- /*
- * At this point, we assume the bug has two fields -- a user@host
- * part, and an ID part. Either field may contain spurious @ signs.
- * The previous version of this code presumed one could split at
- * the rightmost '@'. This is not correct, as InterMail puts an
- * '@' in the UIDL.
- */
+ /*
+ * At this point, we assume the bug has two fields -- a user@host
+ * part, and an ID part. Either field may contain spurious @ signs.
+ * The previous version of this code presumed one could split at
+ * the rightmost '@'. This is not correct, as InterMail puts an
+ * '@' in the UIDL.
+ */
- /* very first, skip leading spaces */
- user = buf + strspn(buf, " \t");
+ /* first, skip leading spaces */
+ user = buf + strspn(buf, " \t");
- /* First, we split the buf into a userhost part and an id part */
- if ( (delimp1 = strpbrk(user, " \t")) != NULL ) {
- id = delimp1 + strspn(delimp1, " \t"); /* set pointer to id */
+ /* First, we split the buf into a userhost part and an id part */
+ if ((id = strchr(user, '<')) != NULL ) /* set pointer to id */
+ {
+ for (delimp1 = id; delimp1 >= user; delimp1--)
+ if ((*delimp1 != ' ') && (*delimp1 != '\t'))
+ break;
+ delimp1++; /* but what if there is only white space ?!? */
saveddelim1 = *delimp1; /* save char after token */
*delimp1 = '\0'; /* delimit token with \0 */
- if (id != NULL) {
- /* now remove trainling white space chars from id */
- if ( (delimp2 = strpbrk(id, " \t\n")) != NULL ) {
- saveddelim2 = *delimp2;
- *delimp2 = '\0';
- }
- atsign = strrchr(user, '@');
- if (atsign) {
- *atsign = '\0';
- host = atsign + 1;
-
- }
- for (ctl = hostlist; ctl; ctl = ctl->next) {
- if (ctl->server.truename &&
- strcasecmp(host, ctl->server.truename) == 0
- && strcasecmp(user, ctl->remotename) == 0) {
+ if (id != NULL)
+ {
+ /* now remove trailing white space chars from id */
+ if ((delimp2 = strpbrk(id, " \t\n")) != NULL ) {
+ saveddelim2 = *delimp2;
+ *delimp2 = '\0';
+ }
+ atsign = strrchr(user, '@');
+ if (atsign) {
+ *atsign = '\0';
+ host = atsign + 1;
+
+ }
+ for (ctl = hostlist; ctl; ctl = ctl->next) {
+ if (ctl->server.truename &&
+ strcasecmp(host, ctl->server.truename) == 0
+ && strcasecmp(user, ctl->remotename) == 0) {
- save_str(&ctl->oldsaved, id, UID_SEEN);
- break;
- }
+ save_str(&ctl->oldsaved, id, UID_SEEN);
+ break;
}
- /* if it's not in a host we're querying,
- ** save it anyway */
- if (ctl == (struct query *)NULL) {
+ }
+ /* if it's not in a host we're querying,
+ ** save it anyway */
+ if (ctl == (struct query *)NULL) {
/* restore string */
- *delimp1 = saveddelim1;
- *atsign = '@';
- if (delimp2 != NULL) {
- *delimp2 = saveddelim2;
- }
- save_str(&scratchlist, buf, UID_SEEN);
+ *delimp1 = saveddelim1;
+ *atsign = '@';
+ if (delimp2 != NULL) {
+ *delimp2 = saveddelim2;
}
+ save_str(&scratchlist, buf, UID_SEEN);
+ }
}
}
}