X-Git-Url: https://the.earth.li/gitweb/?a=blobdiff_plain;ds=sidebyside;f=wotsap.c;h=8996c9b2d11549ba8e9f7ff93177b8776db4e5e4;hb=a8c0920cce727a12697154a85896f2a3ba47eb75;hp=66dc94699d2dc12150e541b543b0e6e12c3d47c3;hpb=8e0907be1d73011075a99a0c029c56664e12843e;p=onak.git
diff --git a/wotsap.c b/wotsap.c
index 66dc946..8996c9b 100644
--- a/wotsap.c
+++ b/wotsap.c
@@ -19,8 +19,7 @@
* more details.
*
* You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * this program. If not, see .
*/
#include
@@ -29,11 +28,12 @@
#include
#include
+#include "build-config.h"
+
#include "hash.h"
#include "log.h"
#include "onak-conf.h"
#include "stats.h"
-#include "version.h"
static struct ll *sortkeyll(struct ll *keys)
{
@@ -84,12 +84,16 @@ static void wotsap(struct onak_dbctx *dbctx, uint64_t keyid, char *dir)
/* Length of dir + "/" + "signatures" + NUL */
tmppath = malloc(strlen(dir) + 12);
+ if (tmppath == NULL) {
+ fprintf(stderr, "Couldn't allocate memory for directory\n");
+ goto err;
+ }
sprintf(tmppath, "%s/WOTVERSION", dir);
file = fopen(tmppath, "w");
if (file == NULL) {
fprintf(stderr, "Couldn't open %s\n", tmppath);
- return;
+ goto err;
}
fprintf(file, "0.2\n");
fclose(file);
@@ -98,7 +102,7 @@ static void wotsap(struct onak_dbctx *dbctx, uint64_t keyid, char *dir)
file = fopen(tmppath, "w");
if (file == NULL) {
fprintf(stderr, "Couldn't open %s\n", tmppath);
- return;
+ goto err;
}
fprintf(file, "This is a Web of Trust archive.\n");
fprintf(file, "The file format is documented at:\n");
@@ -110,21 +114,20 @@ static void wotsap(struct onak_dbctx *dbctx, uint64_t keyid, char *dir)
names = fopen(tmppath, "w");
if (names == NULL) {
fprintf(stderr, "Couldn't open %s\n", tmppath);
- return;
+ goto err;
}
sprintf(tmppath, "%s/keys", dir);
keys = fopen(tmppath, "wb");
if (keys == NULL) {
fprintf(stderr, "Couldn't open %s\n", tmppath);
- return;
+ goto err;
}
sprintf(tmppath, "%s/signatures", dir);
sigs = fopen(tmppath, "wb");
if (sigs == NULL) {
fprintf(stderr, "Couldn't open %s\n", tmppath);
- return;
+ goto err;
}
- free(tmppath);
dbctx->cached_getkeysigs(dbctx, keyid);
curkey = findinhash(keyid);
@@ -180,13 +183,15 @@ static void wotsap(struct onak_dbctx *dbctx, uint64_t keyid, char *dir)
fclose(sigs);
fclose(keys);
fclose(names);
+err:
+ free(tmppath);
}
int main(int argc, char *argv[])
{
int optchar;
char *configfile = NULL, *dir = NULL;
- uint64_t keyid = 0x2DA8B985;
+ uint64_t keyid = 0x94FA372B2DA8B985;
struct onak_dbctx *dbctx;
while ((optchar = getopt(argc, argv, "c:")) != -1 ) {
@@ -203,11 +208,10 @@ int main(int argc, char *argv[])
readconfig(configfile);
initlogthing("wotsap", config.logfile);
- dbctx = config.dbinit(true);
+ dbctx = config.dbinit(config.backend, true);
if (dbctx != NULL) {
inithash();
- wotsap(dbctx, dbctx->getfullkeyid(dbctx, keyid),
- dir ? dir : ".");
+ wotsap(dbctx, keyid, dir ? dir : ".");
destroyhash();
dbctx->cleanupdb(dbctx);
} else {
@@ -215,4 +219,5 @@ int main(int argc, char *argv[])
}
cleanuplogthing();
cleanupconfig();
+ free(configfile);
}