]> git.meshlink.io Git - meshlink/commitdiff
fix private key file read and write on windows (binary read/write)
authorNiklas Hofmann <niklas.hofmann@everbase.net>
Thu, 4 Dec 2014 20:59:52 +0000 (21:59 +0100)
committerGuus Sliepen <guus@meshlink.io>
Sat, 27 Dec 2014 17:37:40 +0000 (18:37 +0100)
src/meshlink.c
src/net_setup.c

index 8b97be7913552d95f1537155e8ebb8b5fa8c45b3..cbe88a3ed256e06f25a72663fc60991ff4189af3 100644 (file)
@@ -660,7 +660,7 @@ static bool ecdsa_keygen(meshlink_handle_t *mesh) {
                logger(mesh, MESHLINK_DEBUG, "Done.\n");
 
        snprintf(privname, sizeof privname, "%s" SLASH "ecdsa_key.priv", mesh->confbase);
-       f = fopen(privname, "w");
+       f = fopen(privname, "wb");
 
        if(!f) {
                meshlink_errno = MESHLINK_ESTORAGE;
@@ -1292,7 +1292,7 @@ static bool refresh_invitation_key(meshlink_handle_t *mesh) {
        }
 
        // Create a new key if necessary.
-       FILE *f = fopen(filename, "r");
+       FILE *f = fopen(filename, "rb");
        if(!f) {
                if(errno != ENOENT) {
                        logger(mesh, MESHLINK_DEBUG, "Could not read %s: %s\n", filename, strerror(errno));
@@ -1308,7 +1308,7 @@ static bool refresh_invitation_key(meshlink_handle_t *mesh) {
                        pthread_mutex_unlock(&(mesh->mesh_mutex));
                        return false;
                }
-               f = fopen(filename, "w");
+               f = fopen(filename, "wb");
                if(!f) {
                        logger(mesh, MESHLINK_DEBUG, "Could not write %s: %s\n", filename, strerror(errno));
                        meshlink_errno = MESHLINK_ESTORAGE;
index 1ba98077046b3d709b7d7db09ecef73bdfc798ea..a2c441417b8e988b78118fbab1daa8b029726614 100644 (file)
@@ -83,7 +83,7 @@ bool read_ecdsa_private_key(meshlink_handle_t *mesh) {
        char filename[PATH_MAX];
 
        snprintf(filename,PATH_MAX, "%s" SLASH "ecdsa_key.priv", mesh->confbase);
-       fp = fopen(filename, "r");
+       fp = fopen(filename, "rb");
 
        if(!fp) {
                logger(mesh, MESHLINK_ERROR, "Error reading ECDSA private key file: %s", strerror(errno));
@@ -110,7 +110,7 @@ static bool read_invitation_key(meshlink_handle_t *mesh) {
 
        snprintf(filename,PATH_MAX, "%s" SLASH "invitations" SLASH "ecdsa_key.priv", mesh->confbase);
 
-       fp = fopen(filename, "r");
+       fp = fopen(filename, "rb");
 
        if(fp) {
                mesh->invitation_key = ecdsa_read_pem_private_key(fp);