itls: Improve certificat saving - sacc - sacc(omys), simple console gopher client Err bitreich.org 70 hgit clone git://bitreich.org/sacc/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/sacc/ URL:git://bitreich.org/sacc/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/sacc/ bitreich.org 70 1Log /scm/sacc/log.gph bitreich.org 70 1Files /scm/sacc/files.gph bitreich.org 70 1Refs /scm/sacc/refs.gph bitreich.org 70 1Tags /scm/sacc/tag bitreich.org 70 1LICENSE /scm/sacc/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 0fce134e1baa2ae47aeb0ee7c091e6c25651bcea /scm/sacc/commit/0fce134e1baa2ae47aeb0ee7c091e6c25651bcea.gph bitreich.org 70 1parent 314af1528acc78f62256043cb8a9c81f8f7833b8 /scm/sacc/commit/314af1528acc78f62256043cb8a9c81f8f7833b8.gph bitreich.org 70 hAuthor: Quentin Rameau URL:mailto:quinq@fifth.space bitreich.org 70 iDate: Fri, 3 May 2024 06:12:10 +0200 Err bitreich.org 70 i Err bitreich.org 70 itls: Improve certificat saving Err bitreich.org 70 i Err bitreich.org 70 iWhile the original code wouldn't pose a problem in practice, Err bitreich.org 70 ias we're not expecting a server to give us a certificate of over 1GB, Err bitreich.org 70 ithis should make it a tad more robust. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M io_tls.c | 14 +++++++++++--- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 11 insertions(+), 3 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/io_tls.c b/io_tls.c /scm/sacc/file/io_tls.c.gph bitreich.org 70 i@@ -106,6 +106,7 @@ savepem(struct tls *t, char *path) Err bitreich.org 70 i FILE *f; Err bitreich.org 70 i const char *s; Err bitreich.org 70 i size_t ln; Err bitreich.org 70 i+ int e = 0; Err bitreich.org 70 i Err bitreich.org 70 i if (path == NULL) Err bitreich.org 70 i return -1; Err bitreich.org 70 i@@ -113,11 +114,18 @@ savepem(struct tls *t, char *path) Err bitreich.org 70 i return -1; Err bitreich.org 70 i if ((f = fopen(path, "w")) == NULL) Err bitreich.org 70 i return -1; Err bitreich.org 70 i- fprintf(f, "%.*s\n", ln, s); Err bitreich.org 70 i+ Err bitreich.org 70 i+ while (ln > 0) Err bitreich.org 70 i+ ln = fwrite(s, 1, ln, f); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (ferror(f)) Err bitreich.org 70 i+ e = -1; Err bitreich.org 70 i if (fclose(f) != 0) Err bitreich.org 70 i- return -1; Err bitreich.org 70 i+ e = -1; Err bitreich.org 70 i+ if (e == -1) Err bitreich.org 70 i+ unlink(path); Err bitreich.org 70 i Err bitreich.org 70 i- return 0; Err bitreich.org 70 i+ return e; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static char * Err bitreich.org 70 .