diff --git checkpolicy-2.5/ChangeLog checkpolicy-2.5/ChangeLog index dfe4908..eae775f 100644 --- checkpolicy-2.5/ChangeLog +++ checkpolicy-2.5/ChangeLog @@ -1,3 +1,6 @@ + * Build policy on systems not supporting DCCP protocol, from Richard Haines. + * Fail if module name different than output base filename, from James Carter + * Add support for portcon dccp protocol, from Richard Haines 2.5 2016-02-23 * Add neverallow support for ioctl extended permissions, from Jeff Vander Stoep. * fix double free on name-based type transitions, from Stephen Smalley. diff --git checkpolicy-2.5/checkmodule.c checkpolicy-2.5/checkmodule.c index 5957d29..418f77b 100644 --- checkpolicy-2.5/checkmodule.c +++ checkpolicy-2.5/checkmodule.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -258,6 +259,25 @@ int main(int argc, char **argv) } } + if (policy_type != POLICY_BASE && outfile) { + char *mod_name = modpolicydb.name; + char *out_path = strdup(outfile); + if (out_path == NULL) { + fprintf(stderr, "%s: out of memory\n", argv[0]); + exit(1); + } + char *out_name = basename(out_path); + char *separator = strrchr(out_name, '.'); + if (separator) { + *separator = '\0'; + } + if (strcmp(mod_name, out_name) != 0) { + fprintf(stderr, "%s: Module name %s is different than the output base filename %s\n", argv[0], mod_name, out_name); + exit(1); + } + free(out_path); + } + if (modpolicydb.policy_type == POLICY_BASE && !cil) { /* Verify that we can successfully expand the base module. */ policydb_t kernpolicydb; diff --git checkpolicy-2.5/checkpolicy.c checkpolicy-2.5/checkpolicy.c index 9da661e..7947c20 100644 --- checkpolicy-2.5/checkpolicy.c +++ checkpolicy-2.5/checkpolicy.c @@ -64,6 +64,9 @@ #include #include #include +#ifndef IPPROTO_DCCP +#define IPPROTO_DCCP 33 +#endif #include #include #include @@ -919,6 +922,8 @@ int main(int argc, char **argv) protocol = IPPROTO_TCP; else if (!strcmp(ans, "udp") || !strcmp(ans, "UDP")) protocol = IPPROTO_UDP; + else if (!strcmp(ans, "dccp") || !strcmp(ans, "DCCP")) + protocol = IPPROTO_DCCP; else { printf("unknown protocol\n"); break; diff --git checkpolicy-2.5/policy_define.c checkpolicy-2.5/policy_define.c index ee20fea..2068b71 100644 --- checkpolicy-2.5/policy_define.c +++ checkpolicy-2.5/policy_define.c @@ -36,6 +36,9 @@ #include #include #include +#ifndef IPPROTO_DCCP +#define IPPROTO_DCCP 33 +#endif #include #include #include @@ -4876,6 +4879,8 @@ int define_port_context(unsigned int low, unsigned int high) protocol = IPPROTO_TCP; } else if ((strcmp(id, "udp") == 0) || (strcmp(id, "UDP") == 0)) { protocol = IPPROTO_UDP; + } else if ((strcmp(id, "dccp") == 0) || (strcmp(id, "DCCP") == 0)) { + protocol = IPPROTO_DCCP; } else { yyerror2("unrecognized protocol %s", id); free(newc);