On 21 October 2016 at 22:27, Laszlo Ersek <ler...@redhat.com> wrote: > AsciiStrCat() is deprecated / disabled under the > DISABLE_NEW_DEPRECATED_INTERFACES feature test macro. > > The caller of CpsrString() is required to pass in "ReturnStr" with 32 > CHAR8 elements. (DefaultExceptionHandler() complies with this.) "Str" is > used to build "ReturnStr" gradually. Just before calling AsciiStrCat(), > "Str" points to the then-terminating NUL character in "ReturnStr". > > The difference (Str - ReturnStr) gives the number of non-NUL characters > we've written thus far, hence (32 - (Str - ReturnStr)) yields the number > of remaining bytes in ReturnStr, including the ultimately terminating NUL > character. > > Cc: Ard Biesheuvel <ard.biesheu...@linaro.org> > Cc: Leif Lindholm <leif.lindh...@linaro.org> > Cc: Michael Zimmermann <sigmaepsilo...@gmail.com> > Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=164 > Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=165 > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Laszlo Ersek <ler...@redhat.com> > --- > > Notes: > - build-tested only > > - Michael (CC'd) had posted a patch earlier for this: > <https://lists.01.org/pipermail/edk2-devel/2016-August/000489.html>, > but I only noticed that now that he pointed it out, in > <https://lists.01.org/pipermail/edk2-devel/2016-October/003121.html>. > I'll leave it to the ArmPkg maintainers to choose one; I don't feel > strongly either way. > > ArmPkg/Library/DefaultExceptionHandlerLib/Arm/DefaultExceptionHandler.c | 5 > ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git > a/ArmPkg/Library/DefaultExceptionHandlerLib/Arm/DefaultExceptionHandler.c > b/ArmPkg/Library/DefaultExceptionHandlerLib/Arm/DefaultExceptionHandler.c > index aece26355e2e..4b2ee9a9acf7 100644 > --- a/ArmPkg/Library/DefaultExceptionHandlerLib/Arm/DefaultExceptionHandler.c > +++ b/ArmPkg/Library/DefaultExceptionHandlerLib/Arm/DefaultExceptionHandler.c > @@ -116,7 +116,10 @@ CpsrString ( > break; > } > > - AsciiStrCat (Str, ModeStr); > + // > + // See the interface contract in the leading comment block. > + // > + AsciiStrCatS (Str, 32 - (Str - ReturnStr), ModeStr); > return;
Could you please use a symbolic constant for this '32', and replace it in the declaration of CpsrStr[] as well? With that Reviewed-by: Ard Biesheuvel <ard.biesheu...@linaro.org> Oh, and if the bogus 'return' happens to get lost along the way as well, I would not mind. _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel