[bug#34310,staging] gnu: mrustc: Fix deserialization bug in communication with the procedural macro compiler plugin.

Message ID 20190204113952.22758-1-dannym@scratchpost.org
State Accepted
Headers show
Series [bug#34310,staging] gnu: mrustc: Fix deserialization bug in communication with the procedural macro compiler plugin. | expand

Checks

Context Check Description
cbaines/applying patch success Successfully applied

Commit Message

Danny Milosavljevic Feb. 4, 2019, 11:39 a.m. UTC
* gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch:
New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/rust.scm (mrustc)[source]: Use it.

Co-authored-by: Chris Marusich <cmmarusich@gmail.com>
---
 gnu/local.mk                                      |  1 +
 ....0-fix-variable-length-integer-receiving.patch | 15 +++++++++++++++
 gnu/packages/rust.scm                             | 12 ++++++++++--
 3 files changed, 26 insertions(+), 2 deletions(-)
 create mode 100644 gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch

Comments

Christopher Marusich Feb. 9, 2019, 9:01 a.m. UTC | #1
Danny Milosavljevic <dannym@scratchpost.org> writes:

> * gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch:
> New file.
> * gnu/local.mk (dist_patch_DATA): Add it.
> * gnu/packages/rust.scm (mrustc)[source]: Use it.
>
> Co-authored-by: Chris Marusich <cmmarusich@gmail.com>

LGTM!  I can't remember - did you submit this patch upstream, also?
Danny Milosavljevic Feb. 13, 2019, 12:35 p.m. UTC | #2
Hi Chris,

thanks!  Pushed to staging.

On Sat, 09 Feb 2019 01:01:56 -0800
Chris Marusich <cmmarusich@gmail.com> wrote:

>  I can't remember - did you submit this patch upstream, also?

Yes, the incident is https://github.com/thepowersgang/mrustc/issues/109 and the pull request is https://github.com/thepowersgang/mrustc/pull/111 which has been merged to mrustc master.

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index f339f32e7..6af0a0407 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1042,6 +1042,7 @@  dist_patch_DATA =						\
   %D%/packages/patches/mozjs38-tracelogger.patch		\
   %D%/packages/patches/mozjs38-version-detection.patch		\
   %D%/packages/patches/mrrescue-support-love-11.patch		\
+  %D%/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch \
   %D%/packages/patches/mumble-1.2.19-abs.patch			\
   %D%/packages/patches/mumps-build-parallelism.patch		\
   %D%/packages/patches/mupen64plus-ui-console-notice.patch	\
diff --git a/gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch b/gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch
new file mode 100644
index 000000000..9e76653a0
--- /dev/null
+++ b/gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch
@@ -0,0 +1,15 @@ 
+https://github.com/thepowersgang/mrustc/issues/109
+From: Danny Milosavljevic <dannym@scratchpost.org>
+Date: Fri, 3 Jan 2019 13:00:00 +0100
+
+--- mrustc/src/expand/proc_macro.cpp.orig	2019-02-01 14:16:54.208486062 +0100
++++ mrustc/src/expand/proc_macro.cpp	2019-02-01 14:17:14.350925705 +0100
+@@ -977,7 +977,7 @@
+     for(;;)
+     {
+         auto b = recv_u8();
+-        v |= static_cast<uint64_t>(b) << ofs;
++        v |= static_cast<uint64_t>(b & 0x7F) << ofs;
+         if( (b & 0x80) == 0 )
+             break;
+         ofs += 7;
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 501736d89..e128bb22b 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -105,7 +105,9 @@ 
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0a7v8ccyzp1sdkwni8h1698hxpfz2sxhcpx42n6l2pbm0rbjp08i"))))
+                  "0a7v8ccyzp1sdkwni8h1698hxpfz2sxhcpx42n6l2pbm0rbjp08i"))
+                (patches
+                 (search-patches "mrustc-0.8.0-fix-variable-length-integer-receiving.patch"))))
       (outputs '("out" "cargo"))
       (build-system gnu-build-system)
       (inputs