aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2011-11-18 06:13:24 +0100
committerKim Alvefur <zash@zash.se>2011-11-18 06:13:24 +0100
commit51e01dfd14f37ff88f15e8990dce089b3944fc3c (patch)
treea3533967fb5bd17d772eb83eb5ad1836a41ccab8
parent70cb616c9c9130c9774044fb66d7ec221e465da7 (diff)
downloadprosody-51e01dfd14f37ff88f15e8990dce089b3944fc3c.tar.gz
prosody-51e01dfd14f37ff88f15e8990dce089b3944fc3c.zip
util.pposix: Don't trust errno for success. Thanks Quince
-rw-r--r--util-src/pposix.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/util-src/pposix.c b/util-src/pposix.c
index ffd21288..dae48390 100644
--- a/util-src/pposix.c
+++ b/util-src/pposix.c
@@ -395,23 +395,27 @@ int lc_initgroups(lua_State* L)
return 2;
}
ret = initgroups(lua_tostring(L, 1), gid);
- switch(errno)
+ if(ret)
+ {
+ switch(errno)
+ {
+ case ENOMEM:
+ lua_pushnil(L);
+ lua_pushstring(L, "no-memory");
+ break;
+ case EPERM:
+ lua_pushnil(L);
+ lua_pushstring(L, "permission-denied");
+ break;
+ default:
+ lua_pushnil(L);
+ lua_pushstring(L, "unknown-error");
+ }
+ }
+ else
{
- case 0:
lua_pushboolean(L, 1);
lua_pushnil(L);
- break;
- case ENOMEM:
- lua_pushnil(L);
- lua_pushstring(L, "no-memory");
- break;
- case EPERM:
- lua_pushnil(L);
- lua_pushstring(L, "permission-denied");
- break;
- default:
- lua_pushnil(L);
- lua_pushstring(L, "unknown-error");
}
return 2;
}