Skip to content

Commit a20d5d3

Browse files
committed
Intialized req and resp as well as potenial int overflow issues
1 parent beffdca commit a20d5d3

File tree

1 file changed

+33
-26
lines changed

1 file changed

+33
-26
lines changed

src/wh_server_keystore.c

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -551,8 +551,8 @@ int wh_Server_HandleKeyRequest(whServerContext* server, uint16_t magic,
551551

552552
switch (action) {
553553
case WH_KEY_CACHE: {
554-
whMessageKeystore_CacheRequest req;
555-
whMessageKeystore_CacheResponse resp;
554+
whMessageKeystore_CacheRequest req = {0};
555+
whMessageKeystore_CacheResponse resp = {0};
556556

557557
/* translate request */
558558
(void)wh_MessageKeystore_TranslateCacheRequest(
@@ -562,8 +562,9 @@ int wh_Server_HandleKeyRequest(whServerContext* server, uint16_t magic,
562562
in = (uint8_t*)req_packet + sizeof(req);
563563

564564
/* set the metadata fields */
565-
meta->id = WH_MAKE_KEYID(WH_KEYTYPE_CRYPTO, server->comm->client_id,
566-
req.id);
565+
meta->id = WH_MAKE_KEYID(WH_KEYTYPE_CRYPTO,
566+
(uint16_t)server->comm->client_id,
567+
(uint16_t)req.id);
567568
meta->access = WH_NVM_ACCESS_ANY;
568569
meta->flags = req.flags;
569570
meta->len = req.sz;
@@ -603,16 +604,17 @@ int wh_Server_HandleKeyRequest(whServerContext* server, uint16_t magic,
603604
#ifdef WOLFHSM_CFG_DMA
604605

605606
case WH_KEY_CACHE_DMA: {
606-
whMessageKeystore_CacheDmaRequest req;
607-
whMessageKeystore_CacheDmaResponse resp;
607+
whMessageKeystore_CacheDmaRequest req = {0};
608+
whMessageKeystore_CacheDmaResponse resp = {0};
608609

609610
/* translate request */
610611
(void)wh_MessageKeystore_TranslateCacheDmaRequest(
611612
magic, (whMessageKeystore_CacheDmaRequest*)req_packet, &req);
612613

613614
/* set the metadata fields */
614-
meta->id = WH_MAKE_KEYID(WH_KEYTYPE_CRYPTO, server->comm->client_id,
615-
req.id);
615+
meta->id = WH_MAKE_KEYID(WH_KEYTYPE_CRYPTO,
616+
(uint16_t)server->comm->client_id,
617+
(uint16_t)req.id);
616618
meta->access = WH_NVM_ACCESS_ANY;
617619
meta->flags = req.flags;
618620
meta->len = req.key.sz;
@@ -654,17 +656,18 @@ int wh_Server_HandleKeyRequest(whServerContext* server, uint16_t magic,
654656
} break;
655657

656658
case WH_KEY_EXPORT_DMA: {
657-
whMessageKeystore_ExportDmaRequest req;
658-
whMessageKeystore_ExportDmaResponse resp;
659+
whMessageKeystore_ExportDmaRequest req = {0};
660+
whMessageKeystore_ExportDmaResponse resp = {0};
659661

660662
/* translate request */
661663
(void)wh_MessageKeystore_TranslateExportDmaRequest(
662664
magic, (whMessageKeystore_ExportDmaRequest*)req_packet, &req);
663665

664666
ret = wh_Server_KeystoreExportKeyDma(
665667
server,
666-
WH_MAKE_KEYID(WH_KEYTYPE_CRYPTO, server->comm->client_id,
667-
req.id),
668+
WH_MAKE_KEYID(WH_KEYTYPE_CRYPTO,
669+
(uint16_t)server->comm->client_id,
670+
(uint16_t)req.id),
668671
req.key.addr, req.key.sz, meta);
669672
resp.rc = ret;
670673
/* propagate bad address to client if DMA operation failed */
@@ -689,15 +692,16 @@ int wh_Server_HandleKeyRequest(whServerContext* server, uint16_t magic,
689692
#endif /* WOLFHSM_CFG_DMA */
690693

691694
case WH_KEY_EVICT: {
692-
whMessageKeystore_EvictRequest req;
693-
whMessageKeystore_EvictResponse resp;
695+
whMessageKeystore_EvictRequest req = {0};
696+
whMessageKeystore_EvictResponse resp = {0};
694697

695698
(void)wh_MessageKeystore_TranslateEvictRequest(
696699
magic, (whMessageKeystore_EvictRequest*)req_packet, &req);
697700

698701
ret = wh_Server_KeystoreEvictKey(
699702
server, WH_MAKE_KEYID(WH_KEYTYPE_CRYPTO,
700-
server->comm->client_id, req.id));
703+
(uint16_t)server->comm->client_id,
704+
(uint16_t)req.id));
701705
resp.rc = ret;
702706
/* TODO: Are there any fatal server errors? */
703707
ret = WH_ERROR_OK;
@@ -708,8 +712,8 @@ int wh_Server_HandleKeyRequest(whServerContext* server, uint16_t magic,
708712
} break;
709713

710714
case WH_KEY_EXPORT: {
711-
whMessageKeystore_ExportRequest req;
712-
whMessageKeystore_ExportResponse resp;
715+
whMessageKeystore_ExportRequest req = {0};
716+
whMessageKeystore_ExportResponse resp = {0};
713717
uint32_t keySz;
714718

715719
/* translate request */
@@ -723,8 +727,9 @@ int wh_Server_HandleKeyRequest(whServerContext* server, uint16_t magic,
723727
/* read the key */
724728
ret = wh_Server_KeystoreReadKey(
725729
server,
726-
WH_MAKE_KEYID(WH_KEYTYPE_CRYPTO, server->comm->client_id,
727-
req.id),
730+
WH_MAKE_KEYID(WH_KEYTYPE_CRYPTO,
731+
(uint16_t)server->comm->client_id,
732+
(uint16_t)req.id),
728733
meta, out, &keySz);
729734

730735
/* Check if key is non-exportable */
@@ -757,16 +762,17 @@ int wh_Server_HandleKeyRequest(whServerContext* server, uint16_t magic,
757762
} break;
758763

759764
case WH_KEY_COMMIT: {
760-
whMessageKeystore_CommitRequest req;
761-
whMessageKeystore_CommitResponse resp;
765+
whMessageKeystore_CommitRequest req = {0};
766+
whMessageKeystore_CommitResponse resp = {0};
762767

763768
/* translate request */
764769
(void)wh_MessageKeystore_TranslateCommitRequest(
765770
magic, (whMessageKeystore_CommitRequest*)req_packet, &req);
766771

767772
ret = wh_Server_KeystoreCommitKey(
768773
server, WH_MAKE_KEYID(WH_KEYTYPE_CRYPTO,
769-
server->comm->client_id, req.id));
774+
(uint16_t)server->comm->client_id,
775+
(uint16_t)req.id));
770776
resp.rc = ret;
771777
/* TODO: Are there any fatal server errors? */
772778
ret = WH_ERROR_OK;
@@ -783,16 +789,17 @@ int wh_Server_HandleKeyRequest(whServerContext* server, uint16_t magic,
783789
} break;
784790

785791
case WH_KEY_ERASE: {
786-
whMessageKeystore_EraseRequest req;
787-
whMessageKeystore_EraseResponse resp;
792+
whMessageKeystore_EraseRequest req = {0};
793+
whMessageKeystore_EraseResponse resp = {0};
788794

789795
/* translate request */
790796
(void)wh_MessageKeystore_TranslateEraseRequest(
791797
magic, (whMessageKeystore_EraseRequest*)req_packet, &req);
792798

793799
ret = wh_Server_KeystoreEraseKey(
794800
server, WH_MAKE_KEYID(WH_KEYTYPE_CRYPTO,
795-
server->comm->client_id, req.id));
801+
(uint16_t)server->comm->client_id,
802+
(uint16_t)req.id));
796803
resp.rc = ret;
797804
/* TODO: Are there any fatal server errors? */
798805
ret = WH_ERROR_OK;
@@ -902,4 +909,4 @@ int wh_Server_KeystoreExportKeyDma(whServerContext* server, whKeyId keyId,
902909
}
903910
#endif /* WOLFHSM_CFG_DMA */
904911

905-
#endif /* !WOLFHSM_CFG_NO_CRYPTO && WOLFHSM_CFG_ENABLE_SERVER */
912+
#endif /* !WOLFHSM_CFG_NO_CRYPTO && WOLFHSM_CFG_ENABLE_SERVER */

0 commit comments

Comments
 (0)