hooks.c (5c47e3cfd4f9d12e9f594d99118c1381c163ff98) | hooks.c (da69a5306ab92e07224da54aafee8b1dccf024f6) |
---|---|
1/* 2 * NSA Security-Enhanced Linux (SELinux) security module 3 * 4 * This file contains the SELinux hook function implementations. 5 * 6 * Authors: Stephen Smalley, <sds@epoch.ncsc.mil> 7 * Chris Vance, <cvance@nai.com> 8 * Wayne Salamon, <wsalamon@nai.com> --- 1254 unchanged lines hidden (view full) --- 1263 1264static inline int default_protocol_dgram(int protocol) 1265{ 1266 return (protocol == IPPROTO_IP || protocol == IPPROTO_UDP); 1267} 1268 1269static inline u16 socket_type_to_security_class(int family, int type, int protocol) 1270{ | 1/* 2 * NSA Security-Enhanced Linux (SELinux) security module 3 * 4 * This file contains the SELinux hook function implementations. 5 * 6 * Authors: Stephen Smalley, <sds@epoch.ncsc.mil> 7 * Chris Vance, <cvance@nai.com> 8 * Wayne Salamon, <wsalamon@nai.com> --- 1254 unchanged lines hidden (view full) --- 1263 1264static inline int default_protocol_dgram(int protocol) 1265{ 1266 return (protocol == IPPROTO_IP || protocol == IPPROTO_UDP); 1267} 1268 1269static inline u16 socket_type_to_security_class(int family, int type, int protocol) 1270{ |
1271 int extsockclass = selinux_policycap_extsockclass; 1272 |
|
1271 switch (family) { 1272 case PF_UNIX: 1273 switch (type) { 1274 case SOCK_STREAM: 1275 case SOCK_SEQPACKET: 1276 return SECCLASS_UNIX_STREAM_SOCKET; 1277 case SOCK_DGRAM: 1278 return SECCLASS_UNIX_DGRAM_SOCKET; 1279 } 1280 break; 1281 case PF_INET: 1282 case PF_INET6: 1283 switch (type) { 1284 case SOCK_STREAM: | 1273 switch (family) { 1274 case PF_UNIX: 1275 switch (type) { 1276 case SOCK_STREAM: 1277 case SOCK_SEQPACKET: 1278 return SECCLASS_UNIX_STREAM_SOCKET; 1279 case SOCK_DGRAM: 1280 return SECCLASS_UNIX_DGRAM_SOCKET; 1281 } 1282 break; 1283 case PF_INET: 1284 case PF_INET6: 1285 switch (type) { 1286 case SOCK_STREAM: |
1287 case SOCK_SEQPACKET: |
|
1285 if (default_protocol_stream(protocol)) 1286 return SECCLASS_TCP_SOCKET; | 1288 if (default_protocol_stream(protocol)) 1289 return SECCLASS_TCP_SOCKET; |
1290 else if (extsockclass && protocol == IPPROTO_SCTP) 1291 return SECCLASS_SCTP_SOCKET; |
|
1287 else 1288 return SECCLASS_RAWIP_SOCKET; 1289 case SOCK_DGRAM: 1290 if (default_protocol_dgram(protocol)) 1291 return SECCLASS_UDP_SOCKET; | 1292 else 1293 return SECCLASS_RAWIP_SOCKET; 1294 case SOCK_DGRAM: 1295 if (default_protocol_dgram(protocol)) 1296 return SECCLASS_UDP_SOCKET; |
1297 else if (extsockclass && protocol == IPPROTO_ICMP) 1298 return SECCLASS_ICMP_SOCKET; |
|
1292 else 1293 return SECCLASS_RAWIP_SOCKET; 1294 case SOCK_DCCP: 1295 return SECCLASS_DCCP_SOCKET; 1296 default: 1297 return SECCLASS_RAWIP_SOCKET; 1298 } 1299 break; --- 37 unchanged lines hidden (view full) --- 1337 case PF_PACKET: 1338 return SECCLASS_PACKET_SOCKET; 1339 case PF_KEY: 1340 return SECCLASS_KEY_SOCKET; 1341 case PF_APPLETALK: 1342 return SECCLASS_APPLETALK_SOCKET; 1343 } 1344 | 1299 else 1300 return SECCLASS_RAWIP_SOCKET; 1301 case SOCK_DCCP: 1302 return SECCLASS_DCCP_SOCKET; 1303 default: 1304 return SECCLASS_RAWIP_SOCKET; 1305 } 1306 break; --- 37 unchanged lines hidden (view full) --- 1344 case PF_PACKET: 1345 return SECCLASS_PACKET_SOCKET; 1346 case PF_KEY: 1347 return SECCLASS_KEY_SOCKET; 1348 case PF_APPLETALK: 1349 return SECCLASS_APPLETALK_SOCKET; 1350 } 1351 |
1352 if (extsockclass) { 1353 switch (family) { 1354 case PF_AX25: 1355 return SECCLASS_AX25_SOCKET; 1356 case PF_IPX: 1357 return SECCLASS_IPX_SOCKET; 1358 case PF_NETROM: 1359 return SECCLASS_NETROM_SOCKET; 1360 case PF_BRIDGE: 1361 return SECCLASS_BRIDGE_SOCKET; 1362 case PF_ATMPVC: 1363 return SECCLASS_ATMPVC_SOCKET; 1364 case PF_X25: 1365 return SECCLASS_X25_SOCKET; 1366 case PF_ROSE: 1367 return SECCLASS_ROSE_SOCKET; 1368 case PF_DECnet: 1369 return SECCLASS_DECNET_SOCKET; 1370 case PF_ATMSVC: 1371 return SECCLASS_ATMSVC_SOCKET; 1372 case PF_RDS: 1373 return SECCLASS_RDS_SOCKET; 1374 case PF_IRDA: 1375 return SECCLASS_IRDA_SOCKET; 1376 case PF_PPPOX: 1377 return SECCLASS_PPPOX_SOCKET; 1378 case PF_LLC: 1379 return SECCLASS_LLC_SOCKET; 1380 case PF_IB: 1381 return SECCLASS_IB_SOCKET; 1382 case PF_MPLS: 1383 return SECCLASS_MPLS_SOCKET; 1384 case PF_CAN: 1385 return SECCLASS_CAN_SOCKET; 1386 case PF_TIPC: 1387 return SECCLASS_TIPC_SOCKET; 1388 case PF_BLUETOOTH: 1389 return SECCLASS_BLUETOOTH_SOCKET; 1390 case PF_IUCV: 1391 return SECCLASS_IUCV_SOCKET; 1392 case PF_RXRPC: 1393 return SECCLASS_RXRPC_SOCKET; 1394 case PF_ISDN: 1395 return SECCLASS_ISDN_SOCKET; 1396 case PF_PHONET: 1397 return SECCLASS_PHONET_SOCKET; 1398 case PF_IEEE802154: 1399 return SECCLASS_IEEE802154_SOCKET; 1400 case PF_CAIF: 1401 return SECCLASS_CAIF_SOCKET; 1402 case PF_ALG: 1403 return SECCLASS_ALG_SOCKET; 1404 case PF_NFC: 1405 return SECCLASS_NFC_SOCKET; 1406 case PF_VSOCK: 1407 return SECCLASS_VSOCK_SOCKET; 1408 case PF_KCM: 1409 return SECCLASS_KCM_SOCKET; 1410 case PF_QIPCRTR: 1411 return SECCLASS_QIPCRTR_SOCKET; 1412#if PF_MAX > 43 1413#error New address family defined, please update this function. 1414#endif 1415 } 1416 } 1417 |
|
1345 return SECCLASS_SOCKET; 1346} 1347 1348static int selinux_genfs_get_sid(struct dentry *dentry, 1349 u16 tclass, 1350 u16 flags, 1351 u32 *sid) 1352{ --- 5142 unchanged lines hidden --- | 1418 return SECCLASS_SOCKET; 1419} 1420 1421static int selinux_genfs_get_sid(struct dentry *dentry, 1422 u16 tclass, 1423 u16 flags, 1424 u32 *sid) 1425{ --- 5142 unchanged lines hidden --- |