X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FRegularExpressionDxe%2FRegularExpressionDxe.c;fp=MdeModulePkg%2FUniversal%2FRegularExpressionDxe%2FRegularExpressionDxe.c;h=326a6e68842317adcdcc02fd3addf638a5f3dfa7;hp=2334e8150f7fdff808a49c945f499134575763a7;hb=1436aea4d5707e672672a11bda72be2c63c936c3;hpb=7c7184e201a90a1d2376e615e55e3f4074731468 diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.c b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.c index 2334e8150f..326a6e6884 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.c @@ -11,20 +11,18 @@ #include "RegularExpressionDxe.h" STATIC -EFI_REGEX_SYNTAX_TYPE * CONST mSupportedSyntaxes[] = { +EFI_REGEX_SYNTAX_TYPE *CONST mSupportedSyntaxes[] = { &gEfiRegexSyntaxTypePosixExtendedGuid, &gEfiRegexSyntaxTypePerlGuid }; STATIC -EFI_REGULAR_EXPRESSION_PROTOCOL mProtocolInstance = { +EFI_REGULAR_EXPRESSION_PROTOCOL mProtocolInstance = { RegularExpressionMatch, RegularExpressionGetInfo }; - - -#define CHAR16_ENCODING ONIG_ENCODING_UTF16_LE +#define CHAR16_ENCODING ONIG_ENCODING_UTF16_LE /** Call the Oniguruma regex match API. @@ -69,12 +67,12 @@ EFI_REGULAR_EXPRESSION_PROTOCOL mProtocolInstance = { STATIC EFI_STATUS OnigurumaMatch ( - IN CHAR16 *String, - IN CHAR16 *Pattern, - IN EFI_REGEX_SYNTAX_TYPE *SyntaxType, - OUT BOOLEAN *Result, - OUT EFI_REGEX_CAPTURE **Captures OPTIONAL, - OUT UINTN *CapturesCount + IN CHAR16 *String, + IN CHAR16 *Pattern, + IN EFI_REGEX_SYNTAX_TYPE *SyntaxType, + OUT BOOLEAN *Result, + OUT EFI_REGEX_CAPTURE **Captures OPTIONAL, + OUT UINTN *CapturesCount ) { regex_t *OnigRegex; @@ -87,7 +85,6 @@ OnigurumaMatch ( OnigUChar *Start; EFI_STATUS Status; - Status = EFI_SUCCESS; // @@ -106,7 +103,7 @@ OnigurumaMatch ( // // Compile pattern // - Start = (OnigUChar*)Pattern; + Start = (OnigUChar *)Pattern; OnigResult = onig_new ( &OnigRegex, Start, @@ -126,12 +123,13 @@ OnigurumaMatch ( // // Try to match // - Start = (OnigUChar*)String; + Start = (OnigUChar *)String; Region = onig_region_new (); if (Region == NULL) { onig_free (OnigRegex); return EFI_OUT_OF_RESOURCES; } + OnigResult = onig_search ( OnigRegex, Start, @@ -158,18 +156,18 @@ OnigurumaMatch ( // // If successful, copy out the region (capture) information // - if (*Result && Captures != NULL) { + if (*Result && (Captures != NULL)) { *CapturesCount = Region->num_regs; - *Captures = AllocateZeroPool (*CapturesCount * sizeof(**Captures)); + *Captures = AllocateZeroPool (*CapturesCount * sizeof (**Captures)); if (*Captures != NULL) { for (Index = 0; Index < *CapturesCount; ++Index) { // // Region beg/end values represent bytes, not characters // - (*Captures)[Index].Length = (Region->end[Index] - Region->beg[Index]) / sizeof(CHAR16); + (*Captures)[Index].Length = (Region->end[Index] - Region->beg[Index]) / sizeof (CHAR16); (*Captures)[Index].CapturePtr = AllocateCopyPool ( ((*Captures)[Index].Length) * sizeof (CHAR16), - (CHAR16*)((UINTN)String + Region->beg[Index]) + (CHAR16 *)((UINTN)String + Region->beg[Index]) ); if ((*Captures)[Index].CapturePtr == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -180,9 +178,10 @@ OnigurumaMatch ( if (EFI_ERROR (Status)) { for (Index = 0; Index < *CapturesCount; ++Index) { if ((*Captures)[Index].CapturePtr != NULL) { - FreePool ((CHAR16*)(*Captures)[Index].CapturePtr); + FreePool ((CHAR16 *)(*Captures)[Index].CapturePtr); } } + FreePool (*Captures); } } @@ -229,23 +228,23 @@ OnigurumaMatch ( EFI_STATUS EFIAPI RegularExpressionGetInfo ( - IN EFI_REGULAR_EXPRESSION_PROTOCOL *This, - IN OUT UINTN *RegExSyntaxTypeListSize, - OUT EFI_REGEX_SYNTAX_TYPE *RegExSyntaxTypeList + IN EFI_REGULAR_EXPRESSION_PROTOCOL *This, + IN OUT UINTN *RegExSyntaxTypeListSize, + OUT EFI_REGEX_SYNTAX_TYPE *RegExSyntaxTypeList ) { - UINTN SyntaxSize; - UINTN Index; + UINTN SyntaxSize; + UINTN Index; - if (This == NULL || RegExSyntaxTypeListSize == NULL) { + if ((This == NULL) || (RegExSyntaxTypeListSize == NULL)) { return EFI_INVALID_PARAMETER; } - if (*RegExSyntaxTypeListSize != 0 && RegExSyntaxTypeList == NULL) { + if ((*RegExSyntaxTypeListSize != 0) && (RegExSyntaxTypeList == NULL)) { return EFI_INVALID_PARAMETER; } - SyntaxSize = ARRAY_SIZE (mSupportedSyntaxes) * sizeof(**mSupportedSyntaxes); + SyntaxSize = ARRAY_SIZE (mSupportedSyntaxes) * sizeof (**mSupportedSyntaxes); if (*RegExSyntaxTypeListSize < SyntaxSize) { *RegExSyntaxTypeListSize = SyntaxSize; @@ -253,8 +252,9 @@ RegularExpressionGetInfo ( } for (Index = 0; Index < ARRAY_SIZE (mSupportedSyntaxes); ++Index) { - CopyMem (&RegExSyntaxTypeList[Index], mSupportedSyntaxes[Index], sizeof(**mSupportedSyntaxes)); + CopyMem (&RegExSyntaxTypeList[Index], mSupportedSyntaxes[Index], sizeof (**mSupportedSyntaxes)); } + *RegExSyntaxTypeListSize = SyntaxSize; return EFI_SUCCESS; @@ -312,20 +312,20 @@ RegularExpressionGetInfo ( EFI_STATUS EFIAPI RegularExpressionMatch ( - IN EFI_REGULAR_EXPRESSION_PROTOCOL *This, - IN CHAR16 *String, - IN CHAR16 *Pattern, - IN EFI_REGEX_SYNTAX_TYPE *SyntaxType OPTIONAL, - OUT BOOLEAN *Result, - OUT EFI_REGEX_CAPTURE **Captures OPTIONAL, - OUT UINTN *CapturesCount + IN EFI_REGULAR_EXPRESSION_PROTOCOL *This, + IN CHAR16 *String, + IN CHAR16 *Pattern, + IN EFI_REGEX_SYNTAX_TYPE *SyntaxType OPTIONAL, + OUT BOOLEAN *Result, + OUT EFI_REGEX_CAPTURE **Captures OPTIONAL, + OUT UINTN *CapturesCount ) { EFI_STATUS Status; UINT32 Index; BOOLEAN Supported; - if (This == NULL || String == NULL || Pattern == NULL || Result == NULL || CapturesCount == NULL) { + if ((This == NULL) || (String == NULL) || (Pattern == NULL) || (Result == NULL) || (CapturesCount == NULL)) { return EFI_INVALID_PARAMETER; } @@ -342,6 +342,7 @@ RegularExpressionMatch ( break; } } + if (!Supported) { return EFI_UNSUPPORTED; }