mirror of
https://github.com/mtrojnar/osslsigncode.git
synced 2025-04-05 01:00:11 -05:00
sizeof style
This commit is contained in:
parent
a161efdb25
commit
3908e874a4
52
msi.c
52
msi.c
@ -159,7 +159,7 @@ static MSI_FILE_HDR *parse_header(char *data)
|
|||||||
/* initialise 512 bytes */
|
/* initialise 512 bytes */
|
||||||
memset(header, 0, sizeof(MSI_FILE_HDR));
|
memset(header, 0, sizeof(MSI_FILE_HDR));
|
||||||
} else {
|
} else {
|
||||||
memcpy(header->signature, data + HEADER_SIGNATURE, sizeof(header->signature));
|
memcpy(header->signature, data + HEADER_SIGNATURE, sizeof header->signature);
|
||||||
header->minorVersion = GET_UINT16_LE(data + HEADER_MINOR_VER);
|
header->minorVersion = GET_UINT16_LE(data + HEADER_MINOR_VER);
|
||||||
header->majorVersion = GET_UINT16_LE(data + HEADER_MAJOR_VER);
|
header->majorVersion = GET_UINT16_LE(data + HEADER_MAJOR_VER);
|
||||||
header->byteOrder = GET_UINT16_LE(data + HEADER_BYTE_ORDER);
|
header->byteOrder = GET_UINT16_LE(data + HEADER_BYTE_ORDER);
|
||||||
@ -174,7 +174,7 @@ static MSI_FILE_HDR *parse_header(char *data)
|
|||||||
header->numMiniFATSector = GET_UINT32_LE(data + HEADER_MINI_FAT_SECTORS_NUM);
|
header->numMiniFATSector = GET_UINT32_LE(data + HEADER_MINI_FAT_SECTORS_NUM);
|
||||||
header->firstDIFATSectorLocation = GET_UINT32_LE(data + HEADER_DIFAT_SECTOR_LOC);
|
header->firstDIFATSectorLocation = GET_UINT32_LE(data + HEADER_DIFAT_SECTOR_LOC);
|
||||||
header->numDIFATSector = GET_UINT32_LE(data + HEADER_DIFAT_SECTORS_NUM);
|
header->numDIFATSector = GET_UINT32_LE(data + HEADER_DIFAT_SECTORS_NUM);
|
||||||
memcpy(header->headerDIFAT, data + HEADER_DIFAT, sizeof(header->headerDIFAT));
|
memcpy(header->headerDIFAT, data + HEADER_DIFAT, sizeof header->headerDIFAT);
|
||||||
}
|
}
|
||||||
return header;
|
return header;
|
||||||
}
|
}
|
||||||
@ -246,8 +246,8 @@ MSI_FILE *msi_file_new(char *buffer, size_t len)
|
|||||||
msi->m_minisectorSize = 1 << msi->m_hdr->miniSectorShift;
|
msi->m_minisectorSize = 1 << msi->m_hdr->miniSectorShift;
|
||||||
msi->m_miniStreamStartSector = 0;
|
msi->m_miniStreamStartSector = 0;
|
||||||
|
|
||||||
if (msi->m_bufferLen < sizeof(*(msi->m_hdr)) ||
|
if (msi->m_bufferLen < sizeof *(msi->m_hdr) ||
|
||||||
memcmp(msi->m_hdr->signature, msi_magic, sizeof(msi_magic))) {
|
memcmp(msi->m_hdr->signature, msi_magic, sizeof msi_magic)) {
|
||||||
printf("Wrong file format\n");
|
printf("Wrong file format\n");
|
||||||
return NULL; /* FAILED */
|
return NULL; /* FAILED */
|
||||||
}
|
}
|
||||||
@ -309,9 +309,9 @@ MSI_ENTRY *msi_signatures_get(MSI_DIRENT *dirent, MSI_ENTRY **dse)
|
|||||||
|
|
||||||
for (i = 0; i < sk_MSI_DIRENT_num(dirent->children); i++) {
|
for (i = 0; i < sk_MSI_DIRENT_num(dirent->children); i++) {
|
||||||
MSI_DIRENT *child = sk_MSI_DIRENT_value(dirent->children, i);
|
MSI_DIRENT *child = sk_MSI_DIRENT_value(dirent->children, i);
|
||||||
if (!memcmp(child->name, digital_signature, MIN(child->nameLen, sizeof(digital_signature)))) {
|
if (!memcmp(child->name, digital_signature, MIN(child->nameLen, sizeof digital_signature))) {
|
||||||
ds = child->entry;
|
ds = child->entry;
|
||||||
} else if (dse && !memcmp(child->name, digital_signature_ex, MIN(child->nameLen, sizeof(digital_signature_ex)))) {
|
} else if (dse && !memcmp(child->name, digital_signature_ex, MIN(child->nameLen, sizeof digital_signature_ex))) {
|
||||||
*dse = child->entry;
|
*dse = child->entry;
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
@ -388,15 +388,15 @@ static void prehash_metadata(MSI_ENTRY *entry, BIO *hash)
|
|||||||
BIO_write(hash, entry->name, entry->nameLen - 2);
|
BIO_write(hash, entry->name, entry->nameLen - 2);
|
||||||
}
|
}
|
||||||
if (entry->type != DIR_STREAM) {
|
if (entry->type != DIR_STREAM) {
|
||||||
BIO_write(hash, entry->clsid, sizeof(entry->clsid));
|
BIO_write(hash, entry->clsid, sizeof entry->clsid);
|
||||||
} else {
|
} else {
|
||||||
BIO_write(hash, entry->size, sizeof(entry->size)/2);
|
BIO_write(hash, entry->size, (sizeof entry->size)/2);
|
||||||
}
|
}
|
||||||
BIO_write(hash, entry->stateBits, sizeof(entry->stateBits));
|
BIO_write(hash, entry->stateBits, sizeof entry->stateBits);
|
||||||
|
|
||||||
if (entry->type != DIR_ROOT) {
|
if (entry->type != DIR_ROOT) {
|
||||||
BIO_write(hash, entry->creationTime, sizeof(entry->creationTime));
|
BIO_write(hash, entry->creationTime, sizeof entry->creationTime);
|
||||||
BIO_write(hash, entry->modifiedTime, sizeof(entry->modifiedTime));
|
BIO_write(hash, entry->modifiedTime, sizeof entry->modifiedTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -414,8 +414,8 @@ int msi_prehash_dir(MSI_DIRENT *dirent, BIO *hash, int is_root)
|
|||||||
sk_MSI_DIRENT_sort(children);
|
sk_MSI_DIRENT_sort(children);
|
||||||
for (i = 0; i < sk_MSI_DIRENT_num(children); i++) {
|
for (i = 0; i < sk_MSI_DIRENT_num(children); i++) {
|
||||||
MSI_DIRENT *child = sk_MSI_DIRENT_value(children, i);
|
MSI_DIRENT *child = sk_MSI_DIRENT_value(children, i);
|
||||||
if (is_root && (!memcmp(child->name, digital_signature, MIN(child->nameLen, sizeof(digital_signature)))
|
if (is_root && (!memcmp(child->name, digital_signature, MIN(child->nameLen, sizeof digital_signature))
|
||||||
|| !memcmp(child->name, digital_signature_ex, MIN(child->nameLen, sizeof(digital_signature_ex))))) {
|
|| !memcmp(child->name, digital_signature_ex, MIN(child->nameLen, sizeof digital_signature_ex)))) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (child->type == DIR_STREAM) {
|
if (child->type == DIR_STREAM) {
|
||||||
@ -444,8 +444,8 @@ int msi_hash_dir(MSI_FILE *msi, MSI_DIRENT *dirent, BIO *hash, int is_root)
|
|||||||
|
|
||||||
for (i = 0; i < sk_MSI_DIRENT_num(children); i++) {
|
for (i = 0; i < sk_MSI_DIRENT_num(children); i++) {
|
||||||
MSI_DIRENT *child = sk_MSI_DIRENT_value(children, i);
|
MSI_DIRENT *child = sk_MSI_DIRENT_value(children, i);
|
||||||
if (is_root && (!memcmp(child->name, digital_signature, MIN(child->nameLen, sizeof(digital_signature)))
|
if (is_root && (!memcmp(child->name, digital_signature, MIN(child->nameLen, sizeof digital_signature))
|
||||||
|| !memcmp(child->name, digital_signature_ex, MIN(child->nameLen, sizeof(digital_signature_ex))))) {
|
|| !memcmp(child->name, digital_signature_ex, MIN(child->nameLen, sizeof digital_signature_ex)))) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (child->type == DIR_STREAM) {
|
if (child->type == DIR_STREAM) {
|
||||||
@ -468,7 +468,7 @@ int msi_hash_dir(MSI_FILE *msi, MSI_DIRENT *dirent, BIO *hash, int is_root)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BIO_write(hash, dirent->entry->clsid, sizeof(dirent->entry->clsid));
|
BIO_write(hash, dirent->entry->clsid, sizeof dirent->entry->clsid);
|
||||||
ret = 1; /* OK */
|
ret = 1; /* OK */
|
||||||
out:
|
out:
|
||||||
sk_MSI_DIRENT_free(children);
|
sk_MSI_DIRENT_free(children);
|
||||||
@ -493,8 +493,8 @@ void msi_calc_digest(char *indata, const EVP_MD *md, u_char *mdbuf, size_t filee
|
|||||||
int l;
|
int l;
|
||||||
static u_char bfb[16*1024*1024];
|
static u_char bfb[16*1024*1024];
|
||||||
size_t want = fileend - n;
|
size_t want = fileend - n;
|
||||||
if (want > sizeof(bfb))
|
if (want > sizeof bfb)
|
||||||
want = sizeof(bfb);
|
want = sizeof bfb;
|
||||||
l = BIO_read(bio, bfb, want);
|
l = BIO_read(bio, bfb, want);
|
||||||
if (l <= 0)
|
if (l <= 0)
|
||||||
break;
|
break;
|
||||||
@ -601,15 +601,15 @@ static int dirent_insert(MSI_DIRENT *dirent, const u_char *name, uint16_t nameLe
|
|||||||
static int signature_insert(MSI_DIRENT *dirent, int len_msiex)
|
static int signature_insert(MSI_DIRENT *dirent, int len_msiex)
|
||||||
{
|
{
|
||||||
if (len_msiex > 0) {
|
if (len_msiex > 0) {
|
||||||
if (!dirent_insert(dirent, digital_signature_ex, sizeof(digital_signature_ex))) {
|
if (!dirent_insert(dirent, digital_signature_ex, sizeof digital_signature_ex)) {
|
||||||
return 0; /* FAILED */
|
return 0; /* FAILED */
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!msi_dirent_delete(dirent, digital_signature_ex, sizeof(digital_signature_ex))) {
|
if (!msi_dirent_delete(dirent, digital_signature_ex, sizeof digital_signature_ex)) {
|
||||||
return 0; /* FAILED */
|
return 0; /* FAILED */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!dirent_insert(dirent, digital_signature, sizeof(digital_signature))) {
|
if (!dirent_insert(dirent, digital_signature, sizeof digital_signature)) {
|
||||||
return 0; /* FAILED */
|
return 0; /* FAILED */
|
||||||
}
|
}
|
||||||
return 1; /* OK */
|
return 1; /* OK */
|
||||||
@ -618,10 +618,10 @@ static int signature_insert(MSI_DIRENT *dirent, int len_msiex)
|
|||||||
static int stream_read(MSI_FILE *msi, MSI_ENTRY *entry, u_char *p_msi, int len_msi,
|
static int stream_read(MSI_FILE *msi, MSI_ENTRY *entry, u_char *p_msi, int len_msi,
|
||||||
u_char *p_msiex, int len_msiex, char **indata, int inlen, int is_root)
|
u_char *p_msiex, int len_msiex, char **indata, int inlen, int is_root)
|
||||||
{
|
{
|
||||||
if (is_root && !memcmp(entry->name, digital_signature, sizeof(digital_signature))) {
|
if (is_root && !memcmp(entry->name, digital_signature, sizeof digital_signature)) {
|
||||||
*indata = (char *)p_msi;
|
*indata = (char *)p_msi;
|
||||||
inlen = len_msi;
|
inlen = len_msi;
|
||||||
} else if (is_root && !memcmp(entry->name, digital_signature_ex, sizeof(digital_signature_ex))) {
|
} else if (is_root && !memcmp(entry->name, digital_signature_ex, sizeof digital_signature_ex)) {
|
||||||
*indata = (char *)p_msiex;
|
*indata = (char *)p_msiex;
|
||||||
inlen = len_msiex;
|
inlen = len_msiex;
|
||||||
} else {
|
} else {
|
||||||
@ -664,7 +664,7 @@ static int stream_handle(MSI_FILE *msi, MSI_DIRENT *dirent, u_char *p_msi, int l
|
|||||||
}
|
}
|
||||||
/* set the size of the user-defined data if this is a stream object */
|
/* set the size of the user-defined data if this is a stream object */
|
||||||
PUT_UINT32_LE(inlen, buf);
|
PUT_UINT32_LE(inlen, buf);
|
||||||
memcpy(child->entry->size, buf, sizeof(child->entry->size));
|
memcpy(child->entry->size, buf, sizeof child->entry->size);
|
||||||
|
|
||||||
if (inlen < MINI_STREAM_CUTOFF_SIZE) {
|
if (inlen < MINI_STREAM_CUTOFF_SIZE) {
|
||||||
/* set the index into the mini FAT to track the chain of sectors through the mini stream */
|
/* set the index into the mini FAT to track the chain of sectors through the mini stream */
|
||||||
@ -893,7 +893,7 @@ static void dirtree_save(MSI_DIRENT *dirent, BIO *outdata, MSI_OUT *out)
|
|||||||
/* set the size of the mini stream in the root object */
|
/* set the size of the mini stream in the root object */
|
||||||
if (dirent->type == DIR_ROOT) {
|
if (dirent->type == DIR_ROOT) {
|
||||||
PUT_UINT32_LE(out->miniStreamLen, buf);
|
PUT_UINT32_LE(out->miniStreamLen, buf);
|
||||||
memcpy(dirent->entry->size, buf, sizeof(dirent->entry->size));
|
memcpy(dirent->entry->size, buf, sizeof dirent->entry->size);
|
||||||
}
|
}
|
||||||
/* sort and save all directory entries */
|
/* sort and save all directory entries */
|
||||||
dirents_save(dirent, outdata, out, &streamId, 0, 0);
|
dirents_save(dirent, outdata, out, &streamId, 0, 0);
|
||||||
@ -993,7 +993,7 @@ static char *header_new(MSI_FILE_HDR *hdr, MSI_OUT *out)
|
|||||||
/* initialise 512 bytes */
|
/* initialise 512 bytes */
|
||||||
memset(data, 0, HEADER_SIZE);
|
memset(data, 0, HEADER_SIZE);
|
||||||
|
|
||||||
memcpy(data + HEADER_SIGNATURE, msi_magic, sizeof(msi_magic));
|
memcpy(data + HEADER_SIGNATURE, msi_magic, sizeof msi_magic);
|
||||||
memset(data + HEADER_CLSID, 0, 16);
|
memset(data + HEADER_CLSID, 0, 16);
|
||||||
PUT_UINT16_LE(hdr->minorVersion, buf);
|
PUT_UINT16_LE(hdr->minorVersion, buf);
|
||||||
memcpy(data + HEADER_MINOR_VER, buf, 2);
|
memcpy(data + HEADER_MINOR_VER, buf, 2);
|
||||||
|
@ -3076,10 +3076,10 @@ static int msi_extract_file(MSI_PARAMS *msiparams, BIO *outdata, int output_pkcs
|
|||||||
|
|
||||||
static int msi_remove_file(MSI_PARAMS *msiparams, BIO *outdata)
|
static int msi_remove_file(MSI_PARAMS *msiparams, BIO *outdata)
|
||||||
{
|
{
|
||||||
if (!msi_dirent_delete(msiparams->dirent, digital_signature_ex, sizeof(digital_signature_ex))) {
|
if (!msi_dirent_delete(msiparams->dirent, digital_signature_ex, sizeof digital_signature_ex)) {
|
||||||
return 1; /* FAILED */
|
return 1; /* FAILED */
|
||||||
}
|
}
|
||||||
if (!msi_dirent_delete(msiparams->dirent, digital_signature, sizeof(digital_signature))) {
|
if (!msi_dirent_delete(msiparams->dirent, digital_signature, sizeof digital_signature)) {
|
||||||
return 1; /* FAILED */
|
return 1; /* FAILED */
|
||||||
}
|
}
|
||||||
if (!msi_file_write(msiparams->msi, msiparams->dirent, NULL, 0, NULL, 0, outdata)) {
|
if (!msi_file_write(msiparams->msi, msiparams->dirent, NULL, 0, NULL, 0, outdata)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user