diff --git a/MODULE.bazel b/MODULE.bazel index 8083c11a..5c8b3371 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -16,7 +16,7 @@ module( name = "abseil-cpp", - version = "20250127.0", + version = "20250127.1", compatibility_level = 1, ) diff --git a/absl/base/config.h b/absl/base/config.h index 0b248651..63b9642d 100644 --- a/absl/base/config.h +++ b/absl/base/config.h @@ -118,7 +118,7 @@ // LTS releases can be obtained from // https://github.com/abseil/abseil-cpp/releases. #define ABSL_LTS_RELEASE_VERSION 20250127 -#define ABSL_LTS_RELEASE_PATCH_LEVEL 0 +#define ABSL_LTS_RELEASE_PATCH_LEVEL 1 // Helper macro to convert a CPP variable to a string literal. #define ABSL_INTERNAL_DO_TOKEN_STR(x) #x diff --git a/absl/debugging/internal/demangle.cc b/absl/debugging/internal/demangle.cc index caac7636..f7de117b 100644 --- a/absl/debugging/internal/demangle.cc +++ b/absl/debugging/internal/demangle.cc @@ -2816,7 +2816,8 @@ static bool ParseLocalNameSuffix(State *state) { // On late parse failure, roll back not only the input but also the output, // whose trailing NUL was overwritten. state->parse_state = copy; - if (state->parse_state.append) { + if (state->parse_state.append && + state->parse_state.out_cur_idx < state->out_end_idx) { state->out[state->parse_state.out_cur_idx] = '\0'; } return false; @@ -2829,7 +2830,8 @@ static bool ParseLocalNameSuffix(State *state) { return true; } state->parse_state = copy; - if (state->parse_state.append) { + if (state->parse_state.append && + state->parse_state.out_cur_idx < state->out_end_idx) { state->out[state->parse_state.out_cur_idx] = '\0'; } diff --git a/absl/debugging/internal/demangle_test.cc b/absl/debugging/internal/demangle_test.cc index 5579221a..9c8225a7 100644 --- a/absl/debugging/internal/demangle_test.cc +++ b/absl/debugging/internal/demangle_test.cc @@ -2017,6 +2017,13 @@ TEST(DemangleRegression, DeeplyNestedArrayType) { TestOnInput(data.c_str()); } +TEST(DemangleRegression, ShortOutputBuffer) { + // This should not crash. + char buffer[1]; + EXPECT_FALSE( + absl::debugging_internal::Demangle("_ZZ2wwE", buffer, sizeof(buffer))); +} + struct Base { virtual ~Base() = default; }; diff --git a/absl/debugging/internal/stacktrace_aarch64-inl.inc b/absl/debugging/internal/stacktrace_aarch64-inl.inc index 4490c4e1..dccadaeb 100644 --- a/absl/debugging/internal/stacktrace_aarch64-inl.inc +++ b/absl/debugging/internal/stacktrace_aarch64-inl.inc @@ -188,7 +188,9 @@ inline void* ClearPacBits(void* ptr) { // compatibility with ARM platforms that do not support pointer // authentication, we use the hint space instruction XPACLRI instead. Hint // space instructions behave as NOPs on unsupported platforms. - asm("xpaclri" : "+r"(x30)); +#define ABSL_XPACLRI_HINT "hint #0x7;" + asm(ABSL_XPACLRI_HINT : "+r"(x30)); // asm("xpaclri" : "+r"(x30)); +#undef ABSL_XPACLRI_HINT return x30; }