return NULL;
}
+ /* FILE_MODE_BITS is a bitwise OR of all possible file mode bits encoded in
+ * the `st_mode` member of `struct stat`. For POSIX compatible systems this
+ * will be 07777. */
+#define FILE_MODE_BITS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)
+
/* only user read or read/write modes allowed */
if (ktype == AST_KEY_PRIVATE &&
- ((st.st_mode & ALLPERMS) & ~(S_IRUSR | S_IWUSR)) != 0) {
- ast_log(LOG_ERROR, "Private key file has bad permissions: %s: %#4o\n", ffname, st.st_mode & ALLPERMS);
+ ((st.st_mode & FILE_MODE_BITS) & ~(S_IRUSR | S_IWUSR)) != 0) {
+ ast_log(LOG_ERROR, "Private key file has bad permissions: %s: %#4o\n", ffname, st.st_mode & FILE_MODE_BITS);
fclose(f);
return NULL;
}