int bldr_load_tee_part(char *name, blkdev_t *bdev, u32 *addr, u32 offset, u32 *size) { int ret; part_t *part = part_get(name); if (NULL == part) { print("%s %s part. not found\n", MOD, name); return -1; } ret = part_load(bdev, part, addr, offset, size); if (ret) return ret; /* header addr will be updated to entry point addr */ ret = tee_verify_image(addr, *size); if (ret) return ret; #if CFG_TEE_SUPPORT { u32 tee_addr = 0; u32 next_offset = sizeof(part_hdr_t) + *size; ret = part_load(bdev, part, &tee_addr, next_offset, size); if (ret) return ret; /* header addr will be updated to entry point addr */ ret = tee_verify_image(&tee_addr, *size); /* set tee entry address */ tee_set_entry(tee_addr); /* set hwuid. note that if you use cmm file, the parameter is empty. */ tee_set_hwuid((u8*)&bldr_param->meid[0], sizeof(bldr_param->meid)); } #endif return ret; }
int bldr_load_part(char *name, blkdev_t *bdev, u32 *addr, u32 *size) { part_t *part = part_get(name); if (NULL == part) { print("%s %s partition not found\n", MOD, name); return -1; } return part_load(bdev, part, addr, 0, size); }
static void doc_parts_load(GaimMimeDocument *doc, const char *boundary, const char *buf, gsize len) { char *b = (char *) buf; gsize n = len; const char *bnd; gsize bl; bnd = g_strdup_printf("--%s", boundary); bl = strlen(bnd); for(b = g_strstr_len(b, n, bnd); b; ) { char *tail; /* skip the boundary */ b += bl; n -= bl; /* skip the trailing \r\n or -- as well */ if(n >= 2) { b += 2; n -= 2; } /* find the next boundary */ tail = g_strstr_len(b, n, bnd); if(tail) { gsize sl; sl = tail - b; if(sl) { GaimMimePart *part = part_new(doc); part_load(part, b, sl); } } b = tail; } }