mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-28 17:09:34 -05:00
- Fixed compile on Windows. Added new type "rs_lock_handle_t" for file locking functions.
- Added missing check of file pointer in PGPHandler::decryptTextFromFile - Added missing fclose of the ssl passphrase file in RsLoginHandler::getSSLPasswdFromGPGFile. Is this still needed, because PGPHandler::decryptTextFromFile does the same check? - Fixed possible memory leak in ops_decrypt_memory. git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-OpenPGP@5222 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
dba66cdd7a
commit
f50edd228f
@ -509,6 +509,11 @@ bool PGPHandler::decryptTextFromFile(const PGPIdType& key_id,std::string& text,c
|
||||
|
||||
FILE *f = fopen(inputfile.c_str(),"rb") ;
|
||||
|
||||
if (f == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
char c ;
|
||||
while( (c = getc(f))!= EOF)
|
||||
buf += c;
|
||||
@ -522,6 +527,7 @@ bool PGPHandler::decryptTextFromFile(const PGPIdType& key_id,std::string& text,c
|
||||
ops_boolean_t res = ops_decrypt_memory((const unsigned char *)buf.c_str(),buf.length(),&out_buf,&out_length,_secring,ops_true,cb_get_passphrase) ;
|
||||
|
||||
text = std::string((char *)out_buf,out_length) ;
|
||||
free (out_buf);
|
||||
return (bool)res ;
|
||||
}
|
||||
|
||||
|
@ -93,11 +93,7 @@ class RsInitConfig
|
||||
/* for certificate creation */
|
||||
//static std::string gpgPasswd;
|
||||
|
||||
#ifndef WINDOWS_SYS
|
||||
static int lockHandle;
|
||||
#else
|
||||
static HANDLE lockHandle;
|
||||
#endif
|
||||
static rs_lock_handle_t lockHandle;
|
||||
|
||||
/* These fields are needed for login */
|
||||
static std::string loginId;
|
||||
@ -152,11 +148,7 @@ static const int SSLPWD_LEN = 64;
|
||||
std::list<accountId> RsInitConfig::accountIds;
|
||||
std::string RsInitConfig::preferedId;
|
||||
|
||||
#ifndef WINDOWS_SYS
|
||||
int RsInitConfig::lockHandle;
|
||||
#else
|
||||
HANDLE RsInitConfig::lockHandle;
|
||||
#endif
|
||||
rs_lock_handle_t RsInitConfig::lockHandle;
|
||||
|
||||
std::string RsInitConfig::configDir;
|
||||
std::string RsInitConfig::load_cert;
|
||||
|
@ -684,6 +684,7 @@ bool RsLoginHandler::getSSLPasswdFromGPGFile(const std::string& ssl_id,std::stri
|
||||
std::cerr << "No password provided, and no sslPassphraseFile : " << getSSLPasswdFileName(ssl_id).c_str() << std::endl;
|
||||
return 0;
|
||||
}
|
||||
fclose(sslPassphraseFile);
|
||||
|
||||
std::cerr << "opening sslPassphraseFile : " << getSSLPasswdFileName(ssl_id).c_str() << std::endl;
|
||||
|
||||
|
@ -852,7 +852,7 @@ std::string RsDirUtil::makePath(const std::string &path1, const std::string &pat
|
||||
return path;
|
||||
}
|
||||
|
||||
int RsDirUtil::createLockFile(const std::string& lock_file_path,int& lock_handle)
|
||||
int RsDirUtil::createLockFile(const std::string& lock_file_path, rs_lock_handle_t &lock_handle)
|
||||
{
|
||||
/******************************** WINDOWS/UNIX SPECIFIC PART ******************/
|
||||
#ifndef WINDOWS_SYS
|
||||
@ -926,7 +926,7 @@ int RsDirUtil::createLockFile(const std::string& lock_file_path,int& lock_handle
|
||||
/******************************** WINDOWS/UNIX SPECIFIC PART ******************/
|
||||
}
|
||||
|
||||
void RsDirUtil::releaseLockFile(int lockHandle)
|
||||
void RsDirUtil::releaseLockFile(rs_lock_handle_t lockHandle)
|
||||
{
|
||||
/******************************** WINDOWS/UNIX SPECIFIC PART ******************/
|
||||
#ifndef WINDOWS_SYS
|
||||
|
@ -36,6 +36,13 @@ class RsThread;
|
||||
|
||||
#include <retroshare/rstypes.h>
|
||||
|
||||
#ifndef WINDOWS_SYS
|
||||
typedef int rs_lock_handle_t;
|
||||
#else
|
||||
#include "rswin.h"
|
||||
typedef HANDLE rs_lock_handle_t;
|
||||
#endif
|
||||
|
||||
// This is a scope guard on a given file. Works like a mutex. Is blocking.
|
||||
// We could do that in another way: derive RsMutex into RsLockFileMutex, and
|
||||
// use RsStackMutex on it transparently. Only issue: this will cost little more
|
||||
@ -48,7 +55,7 @@ class RsStackFileLock
|
||||
~RsStackFileLock() ;
|
||||
|
||||
private:
|
||||
int _file_handle ;
|
||||
rs_lock_handle_t _file_handle ;
|
||||
};
|
||||
|
||||
namespace RsDirUtil {
|
||||
@ -90,10 +97,10 @@ Sha1CheckSum sha1sum(uint8_t *data,uint32_t size) ;
|
||||
// 0: Success
|
||||
// 1: Another instance already has the lock
|
||||
// 2 : Unexpected error
|
||||
int createLockFile(const std::string& lock_file_path,int& lock_handle) ;
|
||||
int createLockFile(const std::string& lock_file_path, rs_lock_handle_t& lock_handle) ;
|
||||
|
||||
// Removes the lock file with specified handle.
|
||||
void releaseLockFile(int lockHandle) ;
|
||||
void releaseLockFile(rs_lock_handle_t lockHandle) ;
|
||||
|
||||
std::wstring getWideTopDir(std::wstring);
|
||||
std::wstring getWideRootDir(std::wstring);
|
||||
|
@ -308,7 +308,7 @@ ops_boolean_t ops_decrypt_memory(const unsigned char *encrypted_memory,int em_le
|
||||
|
||||
// setup memory chunk
|
||||
|
||||
ops_memory_t *output_mem = ops_memory_new() ;
|
||||
ops_memory_t *output_mem;
|
||||
|
||||
ops_setup_memory_write(&pinfo->cbinfo.cinfo, &output_mem,0) ;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user