summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Dowad <alexinbeijing@gmail.com>2014-04-04 16:36:30 +0200
committerTimo Teräs <timo.teras@iki.fi>2014-04-25 10:16:49 +0300
commit751bbc05d4dd72bdbe7e57f6724de865cd7c0bd9 (patch)
tree329a906671c9136a329e263f40fa5b6c1360e567 /src
parenteb5b69d278b1430750a5e1d74bd2804cbc4b14e8 (diff)
downloadsquark-751bbc05d4dd72bdbe7e57f6724de865cd7c0bd9.tar.bz2
squark-751bbc05d4dd72bdbe7e57f6724de865cd7c0bd9.tar.xz
authdb: report errors in authdb_me_open
Diffstat (limited to 'src')
-rw-r--r--src/authdb.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/authdb.c b/src/authdb.c
index a329d8b..c9a5dd3 100644
--- a/src/authdb.c
+++ b/src/authdb.c
@@ -8,12 +8,15 @@
#include <ctype.h>
#include <time.h>
#include <grp.h>
+#include <errno.h>
+#include <string.h>
#include "config.h"
#include "authdb.h"
#include "filterdb.h"
#include "addr.h"
#include "blob.h"
+#include "reporting.h"
#define ALIGN(s,a) (((s) + a - 1) & ~(a - 1))
@@ -38,17 +41,22 @@ static struct authdb_map_entry *authdb_me_open(sockaddr_any *addr, int create)
oflag |= O_CREAT;
fd = shm_open(name, oflag, 0660);
- if (fd < 0)
+ if (fd < 0) {
+ report_error("Couldn't create shared memory object. Error: %s\n", strerror(errno));
return NULL;
+ }
if (ftruncate(fd, AUTHDB_SHM_SIZE) < 0) {
close(fd);
+ report_error("Couldn't truncate shared memory object. Error: %s\n", strerror(errno));
return NULL;
}
getgrnam_r("squark", &grp, buf, sizeof(buf), &res);
if (res != NULL) {
- fchown(fd, -1, res->gr_gid);
+ if (fchown(fd, -1, res->gr_gid) < 0)
+ report_error("Couldn't set group ownership of shared memory object. Error: %s\n",
+ strerror(errno));
fchmod(fd, 0660);
}
@@ -56,12 +64,17 @@ static struct authdb_map_entry *authdb_me_open(sockaddr_any *addr, int create)
PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
close(fd);
- if (base == MAP_FAILED)
+ if (base == MAP_FAILED) {
+ report_error("Couldn't map shared memory object into address space. Error: %s\n",
+ strerror(errno));
return NULL;
+ }
me = malloc(sizeof(*me));
if (me == NULL) {
munmap(base, AUTHDB_SHM_SIZE);
+ report_error("Couldn't allocate memory for authentication database entry. Error: %s\n",
+ strerror(errno));
return NULL;
}