Accepting request 641192 from home:gary_lin:branches:Base:System
fix StrnCpy(), StpnCpy(), and StrnCat() OBS-URL: https://build.opensuse.org/request/show/641192 OBS-URL: https://build.opensuse.org/package/show/Base:System/gnu-efi?expand=0&rev=33
This commit is contained in:
parent
4187da9ac9
commit
fad3c2e199
151
gnu-efi-fix-strncpy-stpncpy-strncat.patch
Normal file
151
gnu-efi-fix-strncpy-stpncpy-strncat.patch
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
From 85f1c797f6935223205159dd108e4871b2e55500 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pete Batard <pete@akeo.ie>
|
||||||
|
Date: Tue, 24 Apr 2018 13:45:11 +0100
|
||||||
|
Subject: [PATCH 1/4] Fix conversion from 'UINTN' to 'UINT8' warnings
|
||||||
|
|
||||||
|
* MSVC generates two of the following in rtstr.c:
|
||||||
|
warning C4244: 'function': conversion from 'UINTN' to 'UINT8', possible loss of data
|
||||||
|
---
|
||||||
|
lib/runtime/rtstr.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/runtime/rtstr.c b/lib/runtime/rtstr.c
|
||||||
|
index 80ff489..dcc1a2a 100644
|
||||||
|
--- a/lib/runtime/rtstr.c
|
||||||
|
+++ b/lib/runtime/rtstr.c
|
||||||
|
@@ -71,7 +71,7 @@ RtStrnCpy (
|
||||||
|
{
|
||||||
|
UINTN Size = RtStrnLen(Src, Len);
|
||||||
|
if (Size != Len)
|
||||||
|
- RtSetMem(Dest + Len, '\0', (Len - Size) * sizeof(CHAR16));
|
||||||
|
+ RtSetMem(Dest + Len, '\0', (UINT8)((Len - Size) * sizeof(CHAR16)));
|
||||||
|
RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -107,7 +107,7 @@ RtStpnCpy (
|
||||||
|
{
|
||||||
|
UINTN Size = RtStrnLen(Src, Len);
|
||||||
|
if (Size != Len)
|
||||||
|
- RtSetMem(Dest + Len, '\0', (Len - Size) * sizeof(CHAR16));
|
||||||
|
+ RtSetMem(Dest + Len, '\0', (UINT8)((Len - Size) * sizeof(CHAR16)));
|
||||||
|
RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
|
||||||
|
return Dest + Size;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.19.0
|
||||||
|
|
||||||
|
|
||||||
|
From 4889dc561f905406f3d0a648321589bd47703fdc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gary Lin <glin@suse.com>
|
||||||
|
Date: Tue, 9 Oct 2018 18:35:21 +0800
|
||||||
|
Subject: [PATCH 2/4] Set '\0' properly in StrnCpy()
|
||||||
|
|
||||||
|
The arguments to SetMem() were wrong. Besides, SetMem() should start at
|
||||||
|
"Dest + Size" since "Size" will be smaller than "Len" if they are not
|
||||||
|
equal.
|
||||||
|
|
||||||
|
Signed-off-by: Gary Lin <glin@suse.com>
|
||||||
|
---
|
||||||
|
lib/runtime/rtstr.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/lib/runtime/rtstr.c b/lib/runtime/rtstr.c
|
||||||
|
index dcc1a2a..949f938 100644
|
||||||
|
--- a/lib/runtime/rtstr.c
|
||||||
|
+++ b/lib/runtime/rtstr.c
|
||||||
|
@@ -71,7 +71,7 @@ RtStrnCpy (
|
||||||
|
{
|
||||||
|
UINTN Size = RtStrnLen(Src, Len);
|
||||||
|
if (Size != Len)
|
||||||
|
- RtSetMem(Dest + Len, '\0', (UINT8)((Len - Size) * sizeof(CHAR16)));
|
||||||
|
+ RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0');
|
||||||
|
RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.19.0
|
||||||
|
|
||||||
|
|
||||||
|
From 38a9921bc39fea25b0ca62d6eb1595bf15d05839 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gary Lin <glin@suse.com>
|
||||||
|
Date: Thu, 11 Oct 2018 12:02:27 +0800
|
||||||
|
Subject: [PATCH 3/4] Implement StrnCat() without StrnCpy()
|
||||||
|
|
||||||
|
StrnCpy() doesn't guarantee the dest string will be null-terminated, so
|
||||||
|
we shouldn't use StrnCpy().
|
||||||
|
|
||||||
|
Signed-off-by: Gary Lin <glin@suse.com>
|
||||||
|
---
|
||||||
|
lib/runtime/rtstr.c | 9 +++++++--
|
||||||
|
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/runtime/rtstr.c b/lib/runtime/rtstr.c
|
||||||
|
index 949f938..fe65d96 100644
|
||||||
|
--- a/lib/runtime/rtstr.c
|
||||||
|
+++ b/lib/runtime/rtstr.c
|
||||||
|
@@ -126,7 +126,7 @@ RtStrCat (
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef __GNUC__
|
||||||
|
-#pragma RUNTIME_CODE(RtStrCat)
|
||||||
|
+#pragma RUNTIME_CODE(RtStrnCat)
|
||||||
|
#endif
|
||||||
|
VOID
|
||||||
|
RUNTIMEFUNCTION
|
||||||
|
@@ -136,7 +136,12 @@ RtStrnCat (
|
||||||
|
IN UINTN Len
|
||||||
|
)
|
||||||
|
{
|
||||||
|
- RtStrnCpy(Dest+StrLen(Dest), Src, Len);
|
||||||
|
+ UINTN DestSize, Size;
|
||||||
|
+
|
||||||
|
+ DestSize = StrLen(Dest);
|
||||||
|
+ Size = RtStrnLen(Src, Len);
|
||||||
|
+ RtCopyMem(Dest + DestSize, Src, Size * sizeof(CHAR16));
|
||||||
|
+ Dest[DestSize + Size] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef __GNUC__
|
||||||
|
--
|
||||||
|
2.19.0
|
||||||
|
|
||||||
|
|
||||||
|
From 134587ea094a4974e5773bf228f6436535f50f1a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gary Lin <glin@suse.com>
|
||||||
|
Date: Thu, 11 Oct 2018 16:10:26 +0800
|
||||||
|
Subject: [PATCH 4/4] Set '\0' properly in StpnCpy()
|
||||||
|
|
||||||
|
The arguments to SetMem() were wrong. Besides, SetMem() should start at
|
||||||
|
"Dest + Size" since "Size" will be smaller than "Len" if they are not
|
||||||
|
equal.
|
||||||
|
|
||||||
|
Signed-off-by: Gary Lin <glin@suse.com>
|
||||||
|
---
|
||||||
|
lib/runtime/rtstr.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/runtime/rtstr.c b/lib/runtime/rtstr.c
|
||||||
|
index fe65d96..73965ca 100644
|
||||||
|
--- a/lib/runtime/rtstr.c
|
||||||
|
+++ b/lib/runtime/rtstr.c
|
||||||
|
@@ -94,7 +94,7 @@ RtStpCpy (
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef __GNUC__
|
||||||
|
-#pragma RUNTIME_CODE(RtStrnCpy)
|
||||||
|
+#pragma RUNTIME_CODE(RtStpnCpy)
|
||||||
|
#endif
|
||||||
|
CHAR16 *
|
||||||
|
RUNTIMEFUNCTION
|
||||||
|
@@ -107,7 +107,7 @@ RtStpnCpy (
|
||||||
|
{
|
||||||
|
UINTN Size = RtStrnLen(Src, Len);
|
||||||
|
if (Size != Len)
|
||||||
|
- RtSetMem(Dest + Len, '\0', (UINT8)((Len - Size) * sizeof(CHAR16)));
|
||||||
|
+ RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0');
|
||||||
|
RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
|
||||||
|
return Dest + Size;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.19.0
|
||||||
|
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Oct 11 08:15:40 UTC 2018 - Gary Ching-Pang Lin <glin@suse.com>
|
||||||
|
|
||||||
|
- Add gnu-efi-fix-strncpy-stpncpy-strncat.patch to fix StrnCpy(),
|
||||||
|
StpnCpy(), and StrnCat()
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Oct 5 09:19:44 UTC 2018 - Gary Ching-Pang Lin <glin@suse.com>
|
Fri Oct 5 09:19:44 UTC 2018 - Gary Ching-Pang Lin <glin@suse.com>
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@ Group: Development/Libraries/Other
|
|||||||
Url: http://sourceforge.net/projects/gnu-efi
|
Url: http://sourceforge.net/projects/gnu-efi
|
||||||
Source: http://sourceforge.net/projects/gnu-efi/files/gnu-efi-%{version}.tar.bz2
|
Source: http://sourceforge.net/projects/gnu-efi/files/gnu-efi-%{version}.tar.bz2
|
||||||
Source1: %{name}-rpmlintrc
|
Source1: %{name}-rpmlintrc
|
||||||
|
Patch1: %{name}-fix-strncpy-stpncpy-strncat.patch
|
||||||
BuildRequires: kernel-source
|
BuildRequires: kernel-source
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
ExclusiveArch: ia64 %ix86 x86_64 aarch64 %arm
|
ExclusiveArch: ia64 %ix86 x86_64 aarch64 %arm
|
||||||
@ -36,6 +37,7 @@ environment.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
%patch1 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
##########################
|
##########################
|
||||||
|
Loading…
Reference in New Issue
Block a user