Skip to content

Commit

Permalink
Patch upb to fix build error with gcc 10 (third_party)
Browse files Browse the repository at this point in the history
  • Loading branch information
meteorcloudy committed Sep 11, 2020
1 parent 26178e6 commit 26cbf77
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
2 changes: 1 addition & 1 deletion third_party/grpc/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ load("//tools/distributions:distribution_rules.bzl", "distrib_java_import", "dis

licenses(["notice"]) # Apache v2

exports_files(["grpc_1.26.0.patch"])
exports_files(["grpc_1.26.0.patch", "upb_gcc10_fix.patch"])

package(default_visibility = ["//visibility:public"])

Expand Down
51 changes: 51 additions & 0 deletions third_party/grpc/upb_gcc10_fix.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
commit 9bd23dab4240b015321a53c45b3c9e4847fbf020
Author: Joshua Haberman <jhaberman@gmail.com>
Date: Tue Apr 7 15:22:11 2020 -0700

Changed upb status to suit GCC10's warning about strncpy(). (#268)

Added tests for all cases. Also removed ellipses from truncated
messages, they were more trouble than they are worth.

diff --git a/upb/upb.c b/upb/upb.c
index cb2cdfd..258192d 100644
--- a/upb/upb.c
+++ b/upb/upb.c
@@ -11,17 +11,6 @@

#include "upb/port_def.inc"

-/* Guarantee null-termination and provide ellipsis truncation.
- * It may be tempting to "optimize" this by initializing these final
- * four bytes up-front and then being careful never to overwrite them,
- * this is safer and simpler. */
-static void nullz(upb_status *status) {
- const char *ellipsis = "...";
- size_t len = strlen(ellipsis);
- UPB_ASSERT(sizeof(status->msg) > len);
- memcpy(status->msg + sizeof(status->msg) - len, ellipsis, len);
-}
-
/* upb_status *****************************************************************/

void upb_status_clear(upb_status *status) {
@@ -37,8 +26,8 @@ const char *upb_status_errmsg(const upb_status *status) { return status->msg; }
void upb_status_seterrmsg(upb_status *status, const char *msg) {
if (!status) return;
status->ok = false;
- strncpy(status->msg, msg, sizeof(status->msg));
- nullz(status);
+ strncpy(status->msg, msg, UPB_STATUS_MAX_MESSAGE - 1);
+ status->msg[UPB_STATUS_MAX_MESSAGE - 1] = '\0';
}

void upb_status_seterrf(upb_status *status, const char *fmt, ...) {
@@ -52,7 +41,7 @@ void upb_status_vseterrf(upb_status *status, const char *fmt, va_list args) {
if (!status) return;
status->ok = false;
_upb_vsnprintf(status->msg, sizeof(status->msg), fmt, args);
- nullz(status);
+ status->msg[UPB_STATUS_MAX_MESSAGE - 1] = '\0';
}

/* upb_alloc ******************************************************************/

0 comments on commit 26cbf77

Please sign in to comment.