chiark / gitweb /
privcache: Pass a cloc to loadpriv and use it
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 23 Nov 2019 12:26:46 +0000 (12:26 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 Feb 2020 21:56:50 +0000 (21:56 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
privcache.c
rsa.c
secnet.h

index 0c10197d8fc0fc2694e002ae2ce0a40330240c62..81b04fcc65f456e3585001fd7425236b37d66ba5 100644 (file)
@@ -78,7 +78,8 @@ static struct sigprivkey_if *uncached_get(struct privcache *st,
         scheme++) {
        st->databuf.start=st->databuf.base;
        st->databuf.size=got;
-       ok=scheme->loadpriv(scheme, &st->databuf, &sigpriv, log);
+       struct cloc loc = { .file=st->path.buffer, .line=0 };
+       ok=scheme->loadpriv(scheme, &st->databuf, &sigpriv, log, loc);
        if (ok) {
            if (sigpriv->sethash) {
                if (!st->defhash) {
diff --git a/rsa.c b/rsa.c
index 14d7050bab2e6ccc683115704d56e4ee594b34de..18b4f3f2e55b592da2bbb28eb191c39c55617103 100644 (file)
--- a/rsa.c
+++ b/rsa.c
@@ -646,7 +646,7 @@ static bool_t postreadcheck_tryload(struct load_ctx *l, FILE *f)
 bool_t rsa1_loadpriv(const struct sigscheme_info *algo,
                     struct buffer_if *privkeydata,
                     struct sigprivkey_if **sigpriv_r,
-                    struct log_if *log)
+                    struct log_if *log, struct cloc loc)
 {
     FILE *f=0;
     struct rsapriv *st=0;
@@ -657,10 +657,6 @@ bool_t rsa1_loadpriv(const struct sigscheme_info *algo,
        goto error_out;
     }
 
-    struct cloc loc;
-    loc.file="dynamically loaded";
-    loc.line=0;
-
     struct load_ctx l[1];
     l->verror=verror_tryload;
     l->postreadcheck=postreadcheck_tryload;
index 1a26e7495c74cdc392ea91c0cf3519e69445a521..7a93ce8147c39ff1f643e4e30a5708554c26228c 100644 (file)
--- a/secnet.h
+++ b/secnet.h
@@ -412,7 +412,7 @@ typedef bool_t sigscheme_loadpub(const struct sigscheme_info *algo,
 typedef bool_t sigscheme_loadpriv(const struct sigscheme_info *algo,
                                  struct buffer_if *privkeydata,
                                  struct sigprivkey_if **sigpriv_r,
-                                 struct log_if *log);
+                                 struct log_if *log, struct cloc loc);
   /* privkeydata may contain data for any algorithm, not necessarily
    * this one!  If it is not for this algorithm, return False and do
    * not log anything (other than at M_DEBUG).  If it *is* for this