Use internal bit operations instead of network byte order functions.

This commit is contained in:
Milan Broz
2021-02-27 21:31:17 +01:00
parent ca2e1fc956
commit 9209d7e3b5
4 changed files with 21 additions and 22 deletions

View File

@@ -22,7 +22,6 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <netinet/in.h>
#include <errno.h> #include <errno.h>
#include <unistd.h> #include <unistd.h>
#include <stdio.h> #include <stdio.h>
@@ -473,12 +472,13 @@ static int _check_and_convert_hdr(const char *device,
unsigned int i; unsigned int i;
char luksMagic[] = LUKS_MAGIC; char luksMagic[] = LUKS_MAGIC;
if(memcmp(hdr->magic, luksMagic, LUKS_MAGIC_L)) { /* Check magic */ hdr->version = be16_to_cpu(hdr->version);
if (memcmp(hdr->magic, luksMagic, LUKS_MAGIC_L)) { /* Check magic */
log_dbg(ctx, "LUKS header not detected."); log_dbg(ctx, "LUKS header not detected.");
if (require_luks_device) if (require_luks_device)
log_err(ctx, _("Device %s is not a valid LUKS device."), device); log_err(ctx, _("Device %s is not a valid LUKS device."), device);
return -EINVAL; return -EINVAL;
} else if((hdr->version = ntohs(hdr->version)) != 1) { /* Convert every uint16/32_t item from network byte order */ } else if (hdr->version != 1) {
log_err(ctx, _("Unsupported LUKS version %d."), hdr->version); log_err(ctx, _("Unsupported LUKS version %d."), hdr->version);
return -EINVAL; return -EINVAL;
} }
@@ -490,15 +490,15 @@ static int _check_and_convert_hdr(const char *device,
} }
/* Header detected */ /* Header detected */
hdr->payloadOffset = ntohl(hdr->payloadOffset); hdr->payloadOffset = be32_to_cpu(hdr->payloadOffset);
hdr->keyBytes = ntohl(hdr->keyBytes); hdr->keyBytes = be32_to_cpu(hdr->keyBytes);
hdr->mkDigestIterations = ntohl(hdr->mkDigestIterations); hdr->mkDigestIterations = be32_to_cpu(hdr->mkDigestIterations);
for(i = 0; i < LUKS_NUMKEYS; ++i) { for (i = 0; i < LUKS_NUMKEYS; ++i) {
hdr->keyblock[i].active = ntohl(hdr->keyblock[i].active); hdr->keyblock[i].active = be32_to_cpu(hdr->keyblock[i].active);
hdr->keyblock[i].passwordIterations = ntohl(hdr->keyblock[i].passwordIterations); hdr->keyblock[i].passwordIterations = be32_to_cpu(hdr->keyblock[i].passwordIterations);
hdr->keyblock[i].keyMaterialOffset = ntohl(hdr->keyblock[i].keyMaterialOffset); hdr->keyblock[i].keyMaterialOffset = be32_to_cpu(hdr->keyblock[i].keyMaterialOffset);
hdr->keyblock[i].stripes = ntohl(hdr->keyblock[i].stripes); hdr->keyblock[i].stripes = be32_to_cpu(hdr->keyblock[i].stripes);
} }
if (LUKS_check_keyslots(ctx, hdr)) if (LUKS_check_keyslots(ctx, hdr))
@@ -650,15 +650,15 @@ int LUKS_write_phdr(struct luks_phdr *hdr,
memset(&convHdr._padding, 0, sizeof(convHdr._padding)); memset(&convHdr._padding, 0, sizeof(convHdr._padding));
/* Convert every uint16/32_t item to network byte order */ /* Convert every uint16/32_t item to network byte order */
convHdr.version = htons(hdr->version); convHdr.version = cpu_to_be16(hdr->version);
convHdr.payloadOffset = htonl(hdr->payloadOffset); convHdr.payloadOffset = cpu_to_be32(hdr->payloadOffset);
convHdr.keyBytes = htonl(hdr->keyBytes); convHdr.keyBytes = cpu_to_be32(hdr->keyBytes);
convHdr.mkDigestIterations = htonl(hdr->mkDigestIterations); convHdr.mkDigestIterations = cpu_to_be32(hdr->mkDigestIterations);
for(i = 0; i < LUKS_NUMKEYS; ++i) { for(i = 0; i < LUKS_NUMKEYS; ++i) {
convHdr.keyblock[i].active = htonl(hdr->keyblock[i].active); convHdr.keyblock[i].active = cpu_to_be32(hdr->keyblock[i].active);
convHdr.keyblock[i].passwordIterations = htonl(hdr->keyblock[i].passwordIterations); convHdr.keyblock[i].passwordIterations = cpu_to_be32(hdr->keyblock[i].passwordIterations);
convHdr.keyblock[i].keyMaterialOffset = htonl(hdr->keyblock[i].keyMaterialOffset); convHdr.keyblock[i].keyMaterialOffset = cpu_to_be32(hdr->keyblock[i].keyMaterialOffset);
convHdr.keyblock[i].stripes = htonl(hdr->keyblock[i].stripes); convHdr.keyblock[i].stripes = cpu_to_be32(hdr->keyblock[i].stripes);
} }
r = write_lseek_blockwise(devfd, device_block_size(ctx, device), device_alignment(device), r = write_lseek_blockwise(devfd, device_block_size(ctx, device), device_alignment(device),

View File

@@ -26,7 +26,6 @@
#include <ctype.h> #include <ctype.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <netinet/in.h>
#include <uuid/uuid.h> #include <uuid/uuid.h>
#include "libcryptsetup.h" #include "libcryptsetup.h"

View File

@@ -41,6 +41,7 @@
#include <sys/time.h> #include <sys/time.h>
#include "lib/nls.h" #include "lib/nls.h"
#include "lib/bitops.h"
#include "lib/utils_crypt.h" #include "lib/utils_crypt.h"
#include "lib/utils_loop.h" #include "lib/utils_loop.h"
#include "lib/utils_fips.h" #include "lib/utils_fips.h"

View File

@@ -21,7 +21,6 @@
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <arpa/inet.h>
#include <uuid/uuid.h> #include <uuid/uuid.h>
#include "cryptsetup.h" #include "cryptsetup.h"
@@ -211,7 +210,7 @@ static int device_check(struct reenc_ctx *rc, const char *device, header_magic s
/* Be sure that we do not process new version of header */ /* Be sure that we do not process new version of header */
memcpy((void*)&version, &buf[MAGIC_L], sizeof(uint16_t)); memcpy((void*)&version, &buf[MAGIC_L], sizeof(uint16_t));
version = ntohs(version); version = be16_to_cpu(version);
if (set_magic == MAKE_UNUSABLE && !memcmp(buf, MAGIC, MAGIC_L) && if (set_magic == MAKE_UNUSABLE && !memcmp(buf, MAGIC, MAGIC_L) &&
version == 1) { version == 1) {