summaryrefslogtreecommitdiff
blob: 06f31ffeb46b99d86f5c48345e4dcc4becb59e1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
From fa1db5785e5cfd9d3cd27b7571b9fe268d2ec2dc Mon Sep 17 00:00:00 2001
From: Kevin McCarthy <kevin@8t8.us>
Date: Mon, 3 May 2021 13:11:30 -0700
Subject: [PATCH] Fix seqset iterator when it ends in a comma

If the seqset ended with a comma, the substr_end marker would be just
before the trailing nul.  In the next call, the loop to skip the
marker would iterate right past the end of string too.

The fix is simple: place the substr_end marker and skip past it
immediately.
---
 imap/util.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/imap/util.c b/imap/util.c
index 52aff7da0..27fb86295 100644
--- a/imap/util.c
+++ b/imap/util.c
@@ -1119,13 +1119,11 @@ int mutt_seqset_iterator_next(struct SeqsetIterator *iter, unsigned int *next)
     if (iter->substr_cur == iter->eostr)
       return 1;
 
-    while (!*(iter->substr_cur))
-      iter->substr_cur++;
     iter->substr_end = strchr(iter->substr_cur, ',');
     if (!iter->substr_end)
       iter->substr_end = iter->eostr;
     else
-      *(iter->substr_end) = '\0';
+      *(iter->substr_end++) = '\0';
 
     char *range_sep = strchr(iter->substr_cur, ':');
     if (range_sep)
-- 
2.30.2