Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 74c332f1 authored by repo sync's avatar repo sync
Browse files

Fix network order for marshalling in keystore interface.

This will fix the endian issue for heterogeneous architectures in keystore marshalling interface.
parent c1f2b9cd
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -242,6 +242,7 @@ static int set_read_timeout(int socket)
{
    struct timeval tv;
    tv.tv_sec = READ_TIMEOUT;
    tv.tv_usec = 0;
    if (setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv,  sizeof tv))
    {
        LOGE("setsockopt failed");
+7 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#define __NETKEYSTORE_H__

#include <stdio.h>
#include <arpa/inet.h>
#include <cutils/sockets.h>
#include <cutils/log.h>

@@ -68,6 +69,8 @@ static inline int read_marshal(int s, LPC_MARSHAL *cmd)
        LOGE("failed to read header\n");
        return -1;
    }
    cmd->len = ntohl(cmd->len);
    cmd->opcode = ntohl(cmd->opcode);
    if (cmd->len > BUFFER_MAX) {
        LOGE("invalid size %d\n", cmd->len);
        return -1;
@@ -82,11 +85,14 @@ static inline int read_marshal(int s, LPC_MARSHAL *cmd)

static inline int write_marshal(int s, LPC_MARSHAL *cmd)
{
    int len = cmd->len;
    cmd->len = htonl(cmd->len);
    cmd->opcode = htonl(cmd->opcode);
    if (writex(s, cmd, 2 * sizeof(uint32_t))) {
        LOGE("failed to write marshal header\n");
        return -1;
    }
    if (writex(s, cmd->data, cmd->len)) {
    if (writex(s, cmd->data, len)) {
        LOGE("failed to write marshal data\n");
        return -1;
    }