]> git.saurik.com Git - apple/xnu.git/blobdiff - libkern/kxld/kxld_splitinfolc.c
xnu-7195.101.1.tar.gz
[apple/xnu.git] / libkern / kxld / kxld_splitinfolc.c
index dd3fde2612a52d173821a2636d8d05139e2a80d6..80472a3f086ac6c2ae1250c466d4f9d8710abeba 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (c) 2016 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
- * 
+ *
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
  * unlawful or unlicensed copies of an Apple operating system, or to
  * circumvent, violate, or enable the circumvention or violation of, any
  * terms of an Apple operating system software license agreement.
- * 
+ *
  * Please obtain a copy of the License at
  * http://www.opensource.apple.com/apsl/ and read it before using this file.
- * 
+ *
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
@@ -22,7 +22,7 @@
  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  * Please see the License for the specific language governing rights and
  * limitations under the License.
- * 
+ *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 #include <string.h>
 #include "kxld_splitinfolc.h"
 
 /*******************************************************************************
- *******************************************************************************/
+*******************************************************************************/
 void
 kxld_splitinfolc_init_from_macho(KXLDsplitinfolc *splitinfolc, struct linkedit_data_command *src)
 {
-    check(splitinfolc);
-    check(src);
+       check(splitinfolc);
+       check(src);
 
-    splitinfolc->cmdsize = src->cmdsize;
-    splitinfolc->dataoff = src->dataoff;
-    splitinfolc->datasize = src->datasize;
-    splitinfolc->has_splitinfolc = TRUE;
+       splitinfolc->cmdsize = src->cmdsize;
+       splitinfolc->dataoff = src->dataoff;
+       splitinfolc->datasize = src->datasize;
+       splitinfolc->has_splitinfolc = TRUE;
 }
 
 /*******************************************************************************
- *******************************************************************************/
+*******************************************************************************/
 void
 kxld_splitinfolc_clear(KXLDsplitinfolc *splitinfolc)
 {
-    bzero(splitinfolc, sizeof(*splitinfolc));
+       bzero(splitinfolc, sizeof(*splitinfolc));
 }
 
 /*******************************************************************************
- *******************************************************************************/
+*******************************************************************************/
 u_long
 kxld_splitinfolc_get_macho_header_size(void)
 {
-    return sizeof(struct linkedit_data_command);
+       return sizeof(struct linkedit_data_command);
 }
 
 /*******************************************************************************
- *******************************************************************************/
+*******************************************************************************/
 kern_return_t
 kxld_splitinfolc_export_macho(const KXLDsplitinfolc *splitinfolc,
-                              splitKextLinkInfo *linked_object,
-                              u_long *header_offset,
-                              u_long header_size,
-                              u_long *data_offset,
-                              u_long size)
+    splitKextLinkInfo *linked_object,
+    u_long *header_offset,
+    u_long header_size,
+    u_long *data_offset,
+    u_long size)
 {
        kern_return_t       rval = KERN_FAILURE;
        struct linkedit_data_command *splitinfolc_hdr = NULL;
@@ -86,24 +86,24 @@ kxld_splitinfolc_export_macho(const KXLDsplitinfolc *splitinfolc,
 
        buf = (u_char *)(linked_object->linkedKext);
        require_action(sizeof(*splitinfolc_hdr) <= header_size - *header_offset,
-                      finish,
-                      rval=KERN_FAILURE);
+           finish,
+           rval = KERN_FAILURE);
        splitinfolc_hdr = (struct linkedit_data_command *)((void *)(buf + *header_offset));
        *header_offset += sizeof(*splitinfolc_hdr);
 
-    if (buf + *data_offset > buf + size) {
-        kxld_log(kKxldLogLinking, kKxldLogErr,
-                 "\n OVERFLOW! linkedKext %p to %p (%lu) copy %p to %p (%u) <%s>",
-                 (void *) buf,
-                 (void *) (buf + size),
-                 size,
-                 (void *) (buf + *data_offset),
-                 (void *) (buf + *data_offset + splitinfolc->datasize),
-                 splitinfolc->datasize,
-                __func__);
-        goto finish;
-    }
-    
+       if (buf + *data_offset > buf + size) {
+               kxld_log(kKxldLogLinking, kKxldLogErr,
+                   "\n OVERFLOW! linkedKext %p to %p (%lu) copy %p to %p (%u) <%s>",
+                   (void *) buf,
+                   (void *) (buf + size),
+                   size,
+                   (void *) (buf + *data_offset),
+                   (void *) (buf + *data_offset + splitinfolc->datasize),
+                   splitinfolc->datasize,
+                   __func__);
+               goto finish;
+       }
+
        // copy in the split info reloc data from kextExecutable. For example dataoff
        // in LC_SEGMENT_SPLIT_INFO load command points to the reloc data in the
        // __LINKEDIT segment.  In this case 65768 into the kextExecutable file is
@@ -114,37 +114,37 @@ kxld_splitinfolc_export_macho(const KXLDsplitinfolc *splitinfolc,
 //    dataoff 65768
 //    datasize 920
 
-    
+
        memcpy(buf + *data_offset, linked_object->kextExecutable + splitinfolc->dataoff, splitinfolc->datasize);
 
 #if SPLIT_KEXTS_DEBUG
-    u_char *dataPtr = buf + *data_offset;
-    
-    kxld_log(kKxldLogLinking, kKxldLogErr,
-             "\n\n linkedKext %p to %p (%lu) copy %p to %p (%u) <%s>",
-             (void *) buf,
-             (void *) (buf + size),
-             size,
-             (void *) (dataPtr),
-             (void *) (dataPtr + splitinfolc->datasize),
-             splitinfolc->datasize,
-             __func__);
-
-    if (*(dataPtr + 0) != 0x7F) {
-        kxld_log(kKxldLogLinking, kKxldLogErr,
-                 "\n\n bad LC_SEGMENT_SPLIT_INFO: 0x%02X %02X %02X %02X %02X %02X %02X %02X at %p (buf %p + %lu) <%s>",
-                 *(dataPtr +0),
-                 *(dataPtr +1),
-                 *(dataPtr +2),
-                 *(dataPtr +3),
-                 *(dataPtr +4),
-                 *(dataPtr +5),
-                 *(dataPtr +6),
-                 *(dataPtr +7),
-                 (void *) dataPtr,
-                 (void *) buf,
-                 *data_offset, __func__);
-    }
+       u_char *dataPtr = buf + *data_offset;
+
+       kxld_log(kKxldLogLinking, kKxldLogErr,
+           "\n\n linkedKext %p to %p (%lu) copy %p to %p (%u) <%s>",
+           (void *) buf,
+           (void *) (buf + size),
+           size,
+           (void *) (dataPtr),
+           (void *) (dataPtr + splitinfolc->datasize),
+           splitinfolc->datasize,
+           __func__);
+
+       if (*(dataPtr + 0) != 0x7F) {
+               kxld_log(kKxldLogLinking, kKxldLogErr,
+                   "\n\n bad LC_SEGMENT_SPLIT_INFO: 0x%02X %02X %02X %02X %02X %02X %02X %02X at %p (buf %p + %lu) <%s>",
+                   *(dataPtr + 0),
+                   *(dataPtr + 1),
+                   *(dataPtr + 2),
+                   *(dataPtr + 3),
+                   *(dataPtr + 4),
+                   *(dataPtr + 5),
+                   *(dataPtr + 6),
+                   *(dataPtr + 7),
+                   (void *) dataPtr,
+                   (void *) buf,
+                   *data_offset, __func__);
+       }
 #endif
 
        // update the load command header
@@ -160,4 +160,3 @@ kxld_splitinfolc_export_macho(const KXLDsplitinfolc *splitinfolc,
 finish:
        return rval;
 }
-