| Index: src/tcs/ps/tcsps.c
|
| diff --git a/src/tcs/ps/tcsps.c b/src/tcs/ps/tcsps.c
|
| index 31f75ff6bad53b0220e872819439ac7ffbec849f..00ad435b4731f438142b84b6f20326036fe38a96 100644
|
| --- a/src/tcs/ps/tcsps.c
|
| +++ b/src/tcs/ps/tcsps.c
|
| @@ -17,6 +17,18 @@
|
| #include <sys/types.h>
|
| #include <sys/file.h>
|
| #include <sys/stat.h>
|
| +#if defined (HAVE_BYTEORDER_H)
|
| +#include <sys/byteorder.h>
|
| +#elif defined (HAVE_ENDIAN_H)
|
| +#include <endian.h>
|
| +#define LE_16 htole16
|
| +#define LE_32 htole32
|
| +#define LE_64 htole64
|
| +#else
|
| +#define LE_16(x) (x)
|
| +#define LE_32(x) (x)
|
| +#define LE_64(x) (x)
|
| +#endif
|
| #include <assert.h>
|
| #include <fcntl.h>
|
| #include <limits.h>
|
| @@ -592,28 +604,40 @@ psfile_write_key(int fd,
|
| }
|
|
|
| /* [UINT16 pub_data_size0 ] yes */
|
| + pub_key_size = LE_16(pub_key_size);
|
| if ((rc = write_data(fd, &pub_key_size, sizeof(UINT16)))) {
|
| LogError("%s", __FUNCTION__);
|
| goto done;
|
| }
|
| + /* Swap it back for later */
|
| + pub_key_size = LE_16(pub_key_size);
|
|
|
| /* [UINT16 blob_size0 ] yes */
|
| + key_blob_size = LE_16(key_blob_size);
|
| if ((rc = write_data(fd, &key_blob_size, sizeof(UINT16)))) {
|
| LogError("%s", __FUNCTION__);
|
| goto done;
|
| }
|
| + /* Swap it back for later */
|
| + key_blob_size = LE_16(key_blob_size);
|
|
|
| /* [UINT32 vendor_data_size0 ] yes */
|
| + vendor_size = LE_32(vendor_size);
|
| if ((rc = write_data(fd, &vendor_size, sizeof(UINT32)))) {
|
| LogError("%s", __FUNCTION__);
|
| goto done;
|
| }
|
| + /* Swap it back for later */
|
| + vendor_size = LE_32(vendor_size);
|
|
|
| /* [UINT16 cache_flags0 ] yes */
|
| + cache_flags = LE_16(cache_flags);
|
| if ((rc = write_data(fd, &cache_flags, sizeof(UINT16)))) {
|
| LogError("%s", __FUNCTION__);
|
| goto done;
|
| }
|
| + /* Swap it back for later */
|
| + cache_flags = LE_16(cache_flags);
|
|
|
| /* [BYTE[] pub_data0 ] no */
|
| if ((rc = write_data(fd, (void *)key.pubKey.key, pub_key_size))) {
|
| @@ -735,6 +759,7 @@ psfile_remove_key(int fd, struct key_disk_cache *c)
|
| }
|
|
|
| rc = read(fd, &num_keys, sizeof(UINT32));
|
| + num_keys = LE_32(num_keys);
|
| if (rc != sizeof(UINT32)) {
|
| LogError("read of %zd bytes: %s", sizeof(UINT32), strerror(errno));
|
| return TCSERR(TSS_E_INTERNAL_ERROR);
|
| @@ -749,6 +774,7 @@ psfile_remove_key(int fd, struct key_disk_cache *c)
|
| /* decrement, then write back out to disk */
|
| num_keys--;
|
|
|
| + num_keys = LE_32(num_keys);
|
| if ((result = write_data(fd, (void *)&num_keys, sizeof(UINT32)))) {
|
| LogError("%s", __FUNCTION__);
|
| return result;
|
|
|