summaryrefslogtreecommitdiff
path: root/pith/conf.c
diff options
context:
space:
mode:
authorEduardo Chappa <chappa@washington.edu>2015-01-25 18:52:13 -0700
committerEduardo Chappa <chappa@washington.edu>2015-01-25 18:52:13 -0700
commit4db5ba9a511564e4a3cb3d2b67bce4bb171eae4f (patch)
tree8ff91f6581acb023e7a3d989414cc925927b49b3 /pith/conf.c
parent2ea73d14866f5eb39bc6a9aab36312abd6fa525c (diff)
downloadalpine-4db5ba9a511564e4a3cb3d2b67bce4bb171eae4f.tar.xz
* new version 2.20.1
* Ignore message from smtp server after a successful authentication challenge. * Alpine would not set include and lib paths for OpenSSL if this was installed in /usr/local/ssl. * If the .pinerc file is a symbolic link, Alpine might not write its contents when saving its configuration. * The _INIT_ token does not skip over non-alpha numeric characters in the name. Reported by Andreas Fehr. * If SSLDIR is defined somehow, do not disable S/MIME if the SSLCERTSDIR is not found. * Mismatch in size of UCS and CELL caused a corruption in the content of a pointer, which made the speller in PC-Alpine get the content of a word incorrectly. * Update splash screen to version 2.20 in main repository. * Skip testing openssl compatibility version when cross-compilation is detected. Fix contributed by Antti Seppälä.
Diffstat (limited to 'pith/conf.c')
-rw-r--r--pith/conf.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/pith/conf.c b/pith/conf.c
index aca7ea28..e8c1ceb9 100644
--- a/pith/conf.c
+++ b/pith/conf.c
@@ -5938,16 +5938,21 @@ write_pinerc(struct pine *ps, EditWhich which, int flags)
slpath = cpystr(slink);
else{
char * basep;
+ int n;
+
basep = strrchr(filename, '/');
- if(basep == NULL){
+ if(basep != NULL){
*basep = '\0';
- slpath = (char *) fs_get((strlen(filename) + strlen(slink) + 2)*sizeof(char));
- snprintf(slpath, sizeof(slpath), "%s/%s", filename, slink);
+ n = strlen(filename) + strlen(slink) + 2;
+ slpath = (char *) fs_get(n*sizeof(char));
+ snprintf(slpath, n, "%s/%s", filename, slink);
*basep = '/';
} else {
- slpath = (char *) fs_get((strlen(ps_global->home_dir) + strlen(slink) + 2)*sizeof(char));
- snprintf(slpath, sizeof(slpath), "%s/%s", ps_global->home_dir, slink);
+ n = strlen(ps_global->home_dir) + strlen(slink) + 2;
+ slpath = (char *) fs_get(n*sizeof(char));
+ snprintf(slpath, n, "%s/%s", ps_global->home_dir, slink);
}
+ slpath[n-1] = '\0';
}
file_attrib_copy(tmp, slpath);
r = rename_file(tmp, slpath);