diff --git a/src/header/arpa_inet/mod.rs b/src/header/arpa_inet/mod.rs
index c20443aaa2e32ccb3df9121148503bd36b71db94..2af943a2fec36e59fef9c5074e17d1b5a2f1184c 100644
--- a/src/header/arpa_inet/mod.rs
+++ b/src/header/arpa_inet/mod.rs
@@ -1,5 +1,8 @@
 //! arpa/inet implementation for Redox, following http://pubs.opengroup.org/onlinepubs/7908799/xns/arpainet.h.html
 
+// TODO: set this for entire crate when possible
+#![deny(unsafe_op_in_unsafe_fn)]
+
 use core::{
     ptr, slice,
     str::{self, FromStr},
@@ -38,19 +41,21 @@ pub extern "C" fn ntohs(netshort: uint16_t) -> uint16_t {
 #[no_mangle]
 pub unsafe extern "C" fn inet_aton(cp: *const c_char, inp: *mut in_addr) -> c_int {
     // TODO: octal/hex
-    inet_pton(AF_INET, cp, inp as *mut c_void)
+    unsafe { inet_pton(AF_INET, cp, inp as *mut c_void) }
 }
 
 #[no_mangle]
 pub unsafe extern "C" fn inet_ntoa(addr: in_addr) -> *const c_char {
     static mut NTOA_ADDR: [c_char; 16] = [0; 16];
 
-    inet_ntop(
-        AF_INET,
-        &addr as *const in_addr as *const c_void,
-        NTOA_ADDR.as_mut_ptr(),
-        16,
-    )
+    unsafe {
+        inet_ntop(
+            AF_INET,
+            &addr as *const in_addr as *const c_void,
+            NTOA_ADDR.as_mut_ptr(),
+            16,
+        )
+    }
 }
 
 #[no_mangle]
@@ -59,12 +64,14 @@ pub unsafe extern "C" fn inet_pton(domain: c_int, src: *const c_char, dest: *mut
         platform::ERRNO.set(EAFNOSUPPORT);
         -1
     } else {
-        let s_addr = slice::from_raw_parts_mut(
-            &mut (*(dest as *mut in_addr)).s_addr as *mut _ as *mut u8,
-            4,
-        );
-        let src_cstr = CStr::from_ptr(src);
-        let mut octets = str::from_utf8_unchecked(src_cstr.to_bytes()).split('.');
+        let s_addr = unsafe {
+            slice::from_raw_parts_mut(
+                &mut (*(dest as *mut in_addr)).s_addr as *mut _ as *mut u8,
+                4,
+            )
+        };
+        let src_cstr = unsafe { CStr::from_ptr(src) };
+        let mut octets = unsafe { str::from_utf8_unchecked(src_cstr.to_bytes()).split('.') };
         for i in 0..4 {
             if let Some(n) = octets.next().and_then(|x| u8::from_str(x).ok()) {
                 s_addr[i] = n;
@@ -94,12 +101,16 @@ pub unsafe extern "C" fn inet_ntop(
         platform::ERRNO.set(ENOSPC);
         ptr::null()
     } else {
-        let s_addr = slice::from_raw_parts(
-            &(*(src as *const in_addr)).s_addr as *const _ as *const u8,
-            4,
-        );
+        let s_addr = unsafe {
+            slice::from_raw_parts(
+                &(*(src as *const in_addr)).s_addr as *const _ as *const u8,
+                4,
+            )
+        };
         let addr = format!("{}.{}.{}.{}\0", s_addr[0], s_addr[1], s_addr[2], s_addr[3]);
-        ptr::copy(addr.as_ptr() as *const c_char, dest, addr.len());
+        unsafe {
+            ptr::copy(addr.as_ptr() as *const c_char, dest, addr.len());
+        }
         dest
     }
 }
@@ -108,7 +119,7 @@ pub unsafe extern "C" fn inet_ntop(
 pub unsafe extern "C" fn inet_addr(cp: *const c_char) -> in_addr_t {
     let mut val: in_addr = in_addr { s_addr: 0 };
 
-    if inet_aton(cp, &mut val) > 0 {
+    if unsafe { inet_aton(cp, &mut val) } > 0 {
         val.s_addr
     } else {
         INADDR_NONE
@@ -154,5 +165,5 @@ pub extern "C" fn inet_netof(input: in_addr) -> in_addr_t {
 
 #[no_mangle]
 pub unsafe extern "C" fn inet_network(cp: *mut c_char) -> in_addr_t {
-    ntohl(inet_addr(cp))
+    ntohl(unsafe { inet_addr(cp) })
 }