cgmnlm

Unnamed repository; edit this file 'description' to name the repository.
git clone git://code.clttr.info/cgmnlm.git
Log | Files | Refs | README | LICENSE

commit 3dd06ab4813b6c8f4992e19fce9d4b094fd3a1a9
parent d371589381e57835d37796f1d349638b806e43b4
Author: Eyal Sawady <ecs@d2evs.net>
Date:   Tue,  9 Mar 2021 05:21:59 -0500

gmnlm: create cert dir on 6x response

So that the OpenSSL command doesn't fail when the cert dir hasn't
already been created.

Diffstat:
Minclude/util.h | 1+
Msrc/gmnlm.c | 7+++++++
Msrc/util.c | 2+-
3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/include/util.h b/include/util.h @@ -9,6 +9,7 @@ struct pathspec { }; char *getpath(const struct pathspec *paths, size_t npaths); +void posix_dirname(char *path, char *dname); int mkdirs(char *path, mode_t mode); int download_resp(FILE *out, struct gemini_response resp, const char *path, char *url); diff --git a/src/gmnlm.c b/src/gmnlm.c @@ -562,6 +562,13 @@ do_requests(struct browser *browser, struct gemini_response *resp) n = snprintf(certpath, sizeof(certpath), path_fmt, host, "crt"); assert(n < sizeof(certpath)); n = snprintf(keypath, sizeof(keypath), path_fmt, host, "key"); + char dname[PATH_MAX + 1]; + posix_dirname(certpath, dname); + if (mkdirs(dname, 0755) != 0) { + fprintf(stderr, "Error creating directory %s: %s\n", + dname, strerror(errno)); + break; + } assert(n < sizeof(keypath)); fprintf(stderr, "The server requested a client certificate.\n" "Presently, this process is not automated.\n" diff --git a/src/util.c b/src/util.c @@ -11,7 +11,7 @@ #include <sys/stat.h> #include "util.h" -static void +void posix_dirname(char *path, char *dname) { char p[PATH_MAX+1];