]> git.saurik.com Git - apple/xnu.git/blobdiff - libkern/kernel_mach_header.c
xnu-1699.26.8.tar.gz
[apple/xnu.git] / libkern / kernel_mach_header.c
index e0830d99dd837666936d0c325c9d765941f58665..0edc6b64de899500862f2153380f7ff28c3e2e1a 100644 (file)
@@ -68,6 +68,33 @@ getlastaddr(void)
        return last_addr;
 }
 
+/*
+ * Find the UUID load command in the Mach-O headers, and return
+ * the address of the UUID blob and size in "*size". If the
+ * Mach-O image is missing a UUID, NULL is returned.
+ */
+void *
+getuuidfromheader(kernel_mach_header_t *mhp, unsigned long *size)
+{
+       struct uuid_command *uuidp;
+       unsigned long i;
+
+       uuidp = (struct uuid_command *)
+               ((uintptr_t)mhp + sizeof(kernel_mach_header_t));
+       for(i = 0; i < mhp->ncmds; i++){
+               if(uuidp->cmd == LC_UUID) {
+                       if (size)
+                               *size = sizeof(uuidp->uuid);
+
+                       return (void *)uuidp->uuid;
+               }
+
+               uuidp = (struct uuid_command *)((uintptr_t)uuidp + uuidp->cmdsize);
+       }
+
+       return NULL;
+}
+
 /*
  * This routine returns the a pointer to the data for the named section in the
  * named segment if it exist in the mach header passed to it.  Also it returns