diff --git a/libfreerdp/crypto/certificate.c b/libfreerdp/crypto/certificate.c index 2d64a0508..98090b444 100644 --- a/libfreerdp/crypto/certificate.c +++ b/libfreerdp/crypto/certificate.c @@ -300,7 +300,7 @@ BOOL certificate_data_replace(rdpCertificateStore* certificate_store, rdpCertifi char* pline; long int size; - fp = fopen(certificate_store->file, "wb+"); + fp = fopen(certificate_store->file, "rb"); if (!fp) return FALSE; @@ -330,6 +330,16 @@ BOOL certificate_data_replace(rdpCertificateStore* certificate_store, rdpCertifi return FALSE; } + fclose(fp); + + fp = fopen(certificate_store->file, "wb+"); + + if (!fp) + { + free(data); + return FALSE; + } + /* Write the file back out, with appropriate fingerprint substitutions */ data[size] = '\n'; data[size + 1] = '\0';