author | Lars Hjemli <hjemli@gmail.com> | 2011-05-23 21:10:37 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2011-05-23 21:17:10 (UTC) |
commit | c8ea73caabcb16ffb74baa70d35650027ed772c4 (patch) (unidiff) | |
tree | 07061939e5568c89bd9d96914f7b61ca0b3b6fe7 | |
parent | 9afc883297b0d0943e9b358d2299950f33e8e5ed (diff) | |
download | cgit-c8ea73caabcb16ffb74baa70d35650027ed772c4.zip cgit-c8ea73caabcb16ffb74baa70d35650027ed772c4.tar.gz cgit-c8ea73caabcb16ffb74baa70d35650027ed772c4.tar.bz2 |
ui-repolist.c: do not return random/stale data from read_agefile
When git/date.c:parse_date() cannot parse its input it returns -1. But
read_agefile() checks if the result is different from zero, essentialy
returning random data from the date buffer when parsing fails. This
patch fixes the issue by verifying that the result from parse_date()
is positive.
Noticed-by: Julius Plenz <plenz@cis.fu-berlin.de>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | ui-repolist.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/ui-repolist.c b/ui-repolist.c index 2c98668..e138f59 100644 --- a/ui-repolist.c +++ b/ui-repolist.c | |||
@@ -11,25 +11,25 @@ | |||
11 | #include "ui-shared.h" | 11 | #include "ui-shared.h" |
12 | 12 | ||
13 | time_t read_agefile(char *path) | 13 | time_t read_agefile(char *path) |
14 | { | 14 | { |
15 | time_t result; | 15 | time_t result; |
16 | size_t size; | 16 | size_t size; |
17 | char *buf; | 17 | char *buf; |
18 | static char buf2[64]; | 18 | static char buf2[64]; |
19 | 19 | ||
20 | if (readfile(path, &buf, &size)) | 20 | if (readfile(path, &buf, &size)) |
21 | return -1; | 21 | return -1; |
22 | 22 | ||
23 | if (parse_date(buf, buf2, sizeof(buf2))) | 23 | if (parse_date(buf, buf2, sizeof(buf2)) > 0) |
24 | result = strtoul(buf2, NULL, 10); | 24 | result = strtoul(buf2, NULL, 10); |
25 | else | 25 | else |
26 | result = 0; | 26 | result = 0; |
27 | free(buf); | 27 | free(buf); |
28 | return result; | 28 | return result; |
29 | } | 29 | } |
30 | 30 | ||
31 | static int get_repo_modtime(const struct cgit_repo *repo, time_t *mtime) | 31 | static int get_repo_modtime(const struct cgit_repo *repo, time_t *mtime) |
32 | { | 32 | { |
33 | char *path; | 33 | char *path; |
34 | struct stat s; | 34 | struct stat s; |
35 | struct cgit_repo *r = (struct cgit_repo *)repo; | 35 | struct cgit_repo *r = (struct cgit_repo *)repo; |