#include <connection-thread.h>
#include <unistd.h>
#include <poll.h>
+
+#include <dpl/errno_string.h>
#include <dpl/log/log.h>
+
#include <client-common.h>
namespace CKM {
ConnectionThread::Pipe::Pipe()
{
if (-1 == pipe(m_pipe))
- ThrowMsg(PipeError, "Pipe creation failed " << strerror(errno));
+ ThrowMsg(PipeError, "Pipe creation failed " << GetErrnoString(errno));
}
ConnectionThread::Pipe::~Pipe()
void ConnectionThread::Pipe::notify()
{
if (-1 == TEMP_FAILURE_RETRY(write(m_pipe[1],"j",1)))
- ThrowMsg(PipeError, "Writing pipe failed " << strerror(errno));
+ ThrowMsg(PipeError, "Writing pipe failed " << GetErrnoString(errno));
}
ConnectionThread::ConnectionThread() :
if(1 != TEMP_FAILURE_RETRY(read(pipe,buffer, 1))) {
int err = errno;
- ThrowMsg(PipeError, "Failed to read pipe: " << strerror(err));
+ ThrowMsg(PipeError, "Failed to read pipe: " << GetErrnoString(err));
}
}
*/
#include <service.h>
+
+#include <dpl/errno_string.h>
#include <dpl/log/log.h>
+
#include <storage-receiver.h>
#include <ocsp-receiver.h>
#include <protocols.h>
if (EAGAIN == err || EWOULDBLOCK == err)
return;
- LogError("Error in write: " << strerror(err));
+ LogError("Error in write: " << GetErrnoString(err));
serviceError(CKM_API_ERROR_SEND_FAILED);
return;
}
ssize_t temp = TEMP_FAILURE_RETRY(read(m_socket->Get(), buffer, RECV_BUFFER_SIZE));
if (-1 == temp) {
int err = errno;
- LogError("Error in read: " << strerror(err));
+ LogError("Error in read: " << GetErrnoString(err));
serviceError(CKM_API_ERROR_RECV_FAILED);
return;
}
#include <sys/un.h>
#include <unistd.h>
+#include <dpl/errno_string.h>
#include <dpl/log/log.h>
#include <dpl/serialization.h>
#include <dpl/singleton.h>
LogDebug("Poll timeout");
} else if (-1 == retval) {
int err = errno;
- LogError("Error in poll: " << strerror(err));
+ LogError("Error in poll: " << CKM::GetErrnoString(err));
}
return retval;
}
sock = socket(AF_UNIX, SOCK_STREAM, 0);
if (sock < 0) {
int err = errno;
- LogError("Error creating socket: " << strerror(err));
+ LogError("Error creating socket: " << GetErrnoString(err));
return CKM_API_ERROR_SOCKET;
}
fcntl(sock, F_SETFL, flags | O_NONBLOCK) < 0)
{
int err = errno;
- LogError("Error in fcntl: " << strerror(err));
+ LogError("Error in fcntl: " << GetErrnoString(err));
return CKM_API_ERROR_SOCKET;
}
if (-1 == retval) {
int err = errno;
- LogError("Error in getsockopt: " << strerror(err));
+ LogError("Error in getsockopt: " << GetErrnoString(err));
return CKM_API_ERROR_SOCKET;
}
}
if (error != 0) {
- LogError("Error in connect: " << strerror(error));
+ LogError("Error in connect: " << GetErrnoString(error));
return CKM_API_ERROR_SOCKET;
}
if (-1 == retval) {
int err = errno;
- LogError("Error connecting socket: " << strerror(err));
+ LogError("Error connecting socket: " << GetErrnoString(err));
if (err == EACCES)
return CKM_API_ERROR_ACCESS_DENIED;
return CKM_API_ERROR_SOCKET;
ssize_t temp = TEMP_FAILURE_RETRY(write(sock.Get(), &send[done], send.size() - done));
if (-1 == temp) {
int err = errno;
- LogError("Error in write: " << strerror(err));
+ LogError("Error in write: " << GetErrnoString(err));
return CKM_API_ERROR_SOCKET;
}
done += temp;
ssize_t temp = TEMP_FAILURE_RETRY(read(sock.Get(), buffer, 2048));
if (-1 == temp) {
int err = errno;
- LogError("Error in read: " << strerror(err));
+ LogError("Error in read: " << GetErrnoString(err));
return CKM_API_ERROR_SOCKET;
}
*/
#include "descriptor-set.h"
+#include <dpl/errno_string.h>
#include <dpl/log/log.h>
#include <string.h>
#include <unistd.h>
ThrowMsg(Timeout, "Poll timeout");
} else if (ret < 0) {
int err = errno;
- ThrowMsg(InternalError, "Poll failed " << strerror(err));
+ ThrowMsg(InternalError, "Poll failed " << GetErrnoString(err));
}
notify(ret);
#include <systemd/sd-daemon.h>
+#include <dpl/errno_string.h>
#include <dpl/log/log.h>
#include <dpl/assert.h>
FD_ZERO(&m_writeSet);
if (-1 == pipe(m_notifyMe)) {
int err = errno;
- ThrowMsg(Exception::InitFailed, "Error in pipe: " << strerror(err));
+ ThrowMsg(Exception::InitFailed, "Error in pipe: " << GetErrnoString(err));
}
LogInfo("Pipe: Read desc: " << m_notifyMe[0] << " Write desc: " << m_notifyMe[1]);
// LogInfo("Accept on sock: " << sock << " Socket opended: " << client);
if (-1 == client) {
int err = errno;
- LogDebug("Error in accept: " << strerror(err));
+ LogDebug("Error in accept: " << GetErrnoString(err));
return;
}
case EINTR:
break;
default:
- LogDebug("Reading sock error: " << strerror(err));
+ LogDebug("Reading sock error: " << GetErrnoString(err));
CloseSocket(sock);
}
}
break;
case EPIPE:
default:
- LogDebug("Error during write: " << strerror(err));
+ LogDebug("Error during write: " << GetErrnoString(err));
CloseSocket(sock);
break;
}
break;
default:
int err = errno;
- LogError("Error in select: " << strerror(err));
+ LogError("Error in select: " << GetErrnoString(err));
return;
}
continue;
if (-1 == (sockfd = socket(AF_UNIX, SOCK_STREAM, 0))) {
int err = errno;
- LogError("Error in socket: " << strerror(err));
- ThrowMsg(Exception::InitFailed, "Error in socket: " << strerror(err));
+ LogError("Error in socket: " << GetErrnoString(err));
+ ThrowMsg(Exception::InitFailed, "Error in socket: " << GetErrnoString(err));
}
if (smack_check()) {
if (-1 == fcntl(sockfd, F_SETFL, flags | O_NONBLOCK)) {
int err = errno;
close(sockfd);
- LogError("Error in fcntl: " << strerror(err));
- ThrowMsg(Exception::InitFailed, "Error in fcntl: " << strerror(err));
+ LogError("Error in fcntl: " << GetErrnoString(err));
+ ThrowMsg(Exception::InitFailed, "Error in fcntl: " << GetErrnoString(err));
}
sockaddr_un serverAddress;
if (-1 == bind(sockfd, (struct sockaddr*)&serverAddress, sizeof(serverAddress))) {
int err = errno;
close(sockfd);
- LogError("Error in bind: " << strerror(err));
- ThrowMsg(Exception::InitFailed, "Error in bind: " << strerror(err));
+ LogError("Error in bind: " << GetErrnoString(err));
+ ThrowMsg(Exception::InitFailed, "Error in bind: " << GetErrnoString(err));
}
umask(originalUmask);
if (-1 == listen(sockfd, 5)) {
int err = errno;
close(sockfd);
- LogError("Error in listen: " << strerror(err));
- ThrowMsg(Exception::InitFailed, "Error in listen: " << strerror(err));
+ LogError("Error in listen: " << GetErrnoString(err));
+ ThrowMsg(Exception::InitFailed, "Error in listen: " << GetErrnoString(err));
}
return sockfd;
#include <sstream>
#include <fstream>
+#include <dpl/errno_string.h>
#include <dpl/log/log.h>
#include <file-system.h>
if ((mkdir(CKM_DATA_PATH.c_str(), 0700)) && (errno != EEXIST)) {
int err = errno;
LogError("Error in mkdir. Data directory could not be created. Errno: "
- << err << " (" << strerror(err) << ")");
+ << err << " (" << GetErrnoString(err) << ")");
return -1; // TODO set up some error code
}
return 0;
UidVector FileSystem::getUIDsFromDBFile() {
UidVector uids;
- DIR *dirp = NULL;
- errno = 0;
+ std::unique_ptr<DIR, std::function<int(DIR*)>>
+ dirp(::opendir(CKM_DATA_PATH.c_str()), ::closedir);
- if((dirp = opendir(CKM_DATA_PATH.c_str())) == NULL) {
+ if (!dirp.get()) {
int err = errno;
- LogError("Error in opendir. Data directory could not be read. Errno: "
- << err << " (" << strerror(err) << ")");
+ LogError("Error in opendir. Data directory could not be read. Error: " << GetErrnoString(err));
+ return UidVector();
+ }
+
+ size_t len = offsetof(struct dirent, d_name) + pathconf(CKM_DATA_PATH.c_str(), _PC_NAME_MAX) + 1;
+ std::unique_ptr<struct dirent, std::function<void(void*)>>
+ pEntry(static_cast<struct dirent*>(::malloc(len)), ::free);
+
+ if (!pEntry.get()) {
+ LogError("Memory allocation failed.");
return UidVector();
}
- struct dirent pPrevDirEntry;
struct dirent* pDirEntry = NULL;
- while ( (!readdir_r(dirp, &pPrevDirEntry, &pDirEntry)) && pDirEntry ) {
+ while ( (!readdir_r(dirp.get(), pEntry.get(), &pDirEntry)) && pDirEntry ) {
// Ignore files with diffrent prefix
if (strncmp(pDirEntry->d_name, CKM_KEY_PREFIX.c_str(), CKM_KEY_PREFIX.size())) {
}
}
- closedir(dirp);
return uids;
}
retCode = -1;
err = errno;
LogError("Error in unlink user database: " << getDBPath()
- << "Errno: " << errno << " " << strerror(err));
+ << "Errno: " << errno << " " << GetErrnoString(err));
}
if (unlink(getDKEKPath().c_str())) {
retCode = -1;
err = errno;
LogError("Error in unlink user DKEK: " << getDKEKPath()
- << "Errno: " << errno << " " << strerror(err));
+ << "Errno: " << errno << " " << GetErrnoString(err));
}
if (unlink(getDBDEKPath().c_str())) {
retCode = -1;
err = errno;
LogError("Error in unlink user DBDEK: " << getDBDEKPath()
- << "Errno: " << errno << " " << strerror(err));
+ << "Errno: " << errno << " " << GetErrnoString(err));
}
if (unlink(getRemovedAppsPath().c_str())) {
retCode = -1;
err = errno;
LogError("Error in unlink user's Removed Apps File: " << getRemovedAppsPath()
- << "Errno: " << errno << " " << strerror(err));
+ << "Errno: " << errno << " " << GetErrnoString(err));
}
return retCode;