Skip to content

Commit

Permalink
RedfishPkg/RedfishHttpDxe: check response content type.
Browse files Browse the repository at this point in the history
Check HTTP response content type to see if it is application/json
type or not. In Redfish, we expect to see response data in JSON
format. If it is not, show warning message to developer.

Signed-off-by: Nickle Wang <[email protected]>
  • Loading branch information
nicklela authored and mergify[bot] committed Aug 29, 2024
1 parent 14e6c48 commit 31f0225
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions RedfishPkg/RedfishHttpDxe/RedfishHttpOperation.c
Original file line number Diff line number Diff line change
Expand Up @@ -493,6 +493,7 @@ ParseResponseMessage (
EFI_STATUS Status;
EDKII_JSON_VALUE JsonData;
EFI_HTTP_HEADER *ContentEncodedHeader;
EFI_HTTP_HEADER *ContentTypeHeader;
VOID *DecodedBody;
UINTN DecodedLength;

Expand Down Expand Up @@ -545,6 +546,17 @@ ParseResponseMessage (
//
if ((ResponseMsg->BodyLength != 0) && (ResponseMsg->Body != NULL)) {
DEBUG ((REDFISH_HTTP_CACHE_DEBUG_REQUEST, "%a: body length: %d\n", __func__, ResponseMsg->BodyLength));

//
// We expect to see JSON body
//
ContentTypeHeader = HttpFindHeader (RedfishResponse->HeaderCount, RedfishResponse->Headers, HTTP_HEADER_CONTENT_TYPE);
if (ContentTypeHeader != NULL) {
if (AsciiStrCmp (ContentTypeHeader->FieldValue, HTTP_CONTENT_TYPE_APP_JSON) != 0) {
DEBUG ((DEBUG_WARN, "%a: body is not in %a format\n", __func__, HTTP_CONTENT_TYPE_APP_JSON));
}
}

//
// Check if data is encoded.
//
Expand Down

0 comments on commit 31f0225

Please sign in to comment.