From aa5dca4814b942bdabcc3d64d6a7bcd1dcc45f48 Mon Sep 17 00:00:00 2001 From: "Richard C. Burhans" Date: Fri, 18 Oct 2024 15:57:54 -0400 Subject: [PATCH] sentralized safe_strncpy, using install --- recipes/genodsp/build.sh | 8 +- recipes/genodsp/stringop-truncation.patch | 147 +++++++++++----------- 2 files changed, 81 insertions(+), 74 deletions(-) diff --git a/recipes/genodsp/build.sh b/recipes/genodsp/build.sh index eeeeebde6a3ae..8b3a89f8a7287 100644 --- a/recipes/genodsp/build.sh +++ b/recipes/genodsp/build.sh @@ -1,9 +1,11 @@ #!/bin/bash -e set -uex -mkdir -vp ${PREFIX}/bin +mkdir -vp "${PREFIX}/bin" make VERBOSE=1 -j ${CPU_COUNT} -cp "$SRC_DIR/genodsp" "$PREFIX/bin" -chmod ua+x "$PREFIX/bin/genodsp +if ! install -v "$SRC_DIR/genodsp" "$PREFIX/bin/genodsp"; then + echo "Failed to install genodsp binary" >&2 + exit 1 +fi diff --git a/recipes/genodsp/stringop-truncation.patch b/recipes/genodsp/stringop-truncation.patch index cbd168707a9d3..de2536e1f3f18 100644 --- a/recipes/genodsp/stringop-truncation.patch +++ b/recipes/genodsp/stringop-truncation.patch @@ -1,167 +1,172 @@ diff --git a/add.c b/add.c -index 752dd5d..7f75e47 100644 +index 752dd5d..8fa4bad 100644 --- a/add.c +++ b/add.c -@@ -240,7 +240,10 @@ void op_add_apply +@@ -240,7 +240,7 @@ void op_add_apply v = NULL; chromSpec = find_chromosome_spec (chrom); if (chromSpec != NULL) v = chromSpec->valVector; -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy (prevChrom, chrom, sizeof(prevChrom)); -+#pragma GCC diagnostic pop +- strncpy (prevChrom, chrom, sizeof(prevChrom)); ++ safe_strncpy (prevChrom, chrom, sizeof(prevChrom)); } if (chromSpec == NULL) continue; -@@ -533,7 +536,10 @@ void op_subtract_apply +@@ -533,7 +533,7 @@ void op_subtract_apply v = NULL; chromSpec = find_chromosome_spec (chrom); if (chromSpec != NULL) v = chromSpec->valVector; -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy (prevChrom, chrom, sizeof(prevChrom)); -+#pragma GCC diagnostic pop +- strncpy (prevChrom, chrom, sizeof(prevChrom)); ++ safe_strncpy (prevChrom, chrom, sizeof(prevChrom)); } if (chromSpec == NULL) continue; diff --git a/genodsp.c b/genodsp.c -index ac1704e..00377b1 100644 +index ac1704e..dffd622 100644 --- a/genodsp.c +++ b/genodsp.c -@@ -1229,7 +1229,10 @@ void read_intervals +@@ -1229,7 +1229,7 @@ void read_intervals v = NULL; chromSpec = find_chromosome_spec (chrom); if (chromSpec != NULL) v = chromSpec->valVector; -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy (prevChrom, chrom, sizeof(prevChrom)); -+#pragma GCC diagnostic pop +- strncpy (prevChrom, chrom, sizeof(prevChrom)); ++ safe_strncpy (prevChrom, chrom, sizeof(prevChrom)); } if (chromSpec == NULL) continue; diff --git a/logical.c b/logical.c -index fb295e3..6689e51 100644 +index fb295e3..45e1c20 100644 --- a/logical.c +++ b/logical.c -@@ -497,7 +497,10 @@ void op_or_apply +@@ -497,7 +497,7 @@ void op_or_apply v = NULL; chromSpec = find_chromosome_spec (chrom); if (chromSpec != NULL) v = chromSpec->valVector; -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy (prevChrom, chrom, sizeof(prevChrom)); -+#pragma GCC diagnostic pop +- strncpy (prevChrom, chrom, sizeof(prevChrom)); ++ safe_strncpy (prevChrom, chrom, sizeof(prevChrom)); } if (chromSpec == NULL) continue; -@@ -810,7 +813,10 @@ void op_and_apply +@@ -810,7 +810,7 @@ void op_and_apply if (chromSpec->flag) goto chrom_not_together; } -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy (prevChrom, chrom, sizeof(prevChrom)); -+#pragma GCC diagnostic pop +- strncpy (prevChrom, chrom, sizeof(prevChrom)); ++ safe_strncpy (prevChrom, chrom, sizeof(prevChrom)); } // if the current chromosome is not of any interest, ignore this diff --git a/mask.c b/mask.c -index 4fd5ebd..283a5eb 100644 +index 4fd5ebd..ddd068e 100644 --- a/mask.c +++ b/mask.c -@@ -253,7 +253,10 @@ void op_mask_apply +@@ -253,7 +253,7 @@ void op_mask_apply v = NULL; chromSpec = find_chromosome_spec (chrom); if (chromSpec != NULL) v = chromSpec->valVector; -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy (prevChrom, chrom, sizeof(prevChrom)); -+#pragma GCC diagnostic pop +- strncpy (prevChrom, chrom, sizeof(prevChrom)); ++ safe_strncpy (prevChrom, chrom, sizeof(prevChrom)); } if (chromSpec == NULL) continue; -@@ -548,7 +551,10 @@ void op_mask_not_apply +@@ -548,7 +548,7 @@ void op_mask_not_apply if (chromSpec->flag) goto chrom_not_together; } -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy (prevChrom, chrom, sizeof(prevChrom)); -+#pragma GCC diagnostic pop +- strncpy (prevChrom, chrom, sizeof(prevChrom)); ++ safe_strncpy (prevChrom, chrom, sizeof(prevChrom)); } // if the current chromosome is not of any interest, ignore this diff --git a/minmax.c b/minmax.c -index c222bd0..4c9684e 100644 +index c222bd0..eae69ab 100644 --- a/minmax.c +++ b/minmax.c -@@ -261,7 +261,10 @@ void op_min_in_interval_apply +@@ -261,7 +261,7 @@ void op_min_in_interval_apply if (chromSpec->flag) goto chrom_not_together; } -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy (prevChrom, chrom, sizeof(prevChrom)); -+#pragma GCC diagnostic pop +- strncpy (prevChrom, chrom, sizeof(prevChrom)); ++ safe_strncpy (prevChrom, chrom, sizeof(prevChrom)); } // if the current chromosome is not of any interest, ignore this -@@ -664,7 +667,10 @@ void op_max_in_interval_apply +@@ -664,7 +664,7 @@ void op_max_in_interval_apply if (chromSpec->flag) goto chrom_not_together; } -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy (prevChrom, chrom, sizeof(prevChrom)); -+#pragma GCC diagnostic pop +- strncpy (prevChrom, chrom, sizeof(prevChrom)); ++ safe_strncpy (prevChrom, chrom, sizeof(prevChrom)); } // if the current chromosome is not of any interest, ignore this -@@ -1941,7 +1947,10 @@ void op_min_with_apply +@@ -1941,7 +1941,7 @@ void op_min_with_apply v = NULL; chromSpec = find_chromosome_spec (chrom); if (chromSpec != NULL) v = chromSpec->valVector; -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy (prevChrom, chrom, sizeof(prevChrom)); -+#pragma GCC diagnostic pop +- strncpy (prevChrom, chrom, sizeof(prevChrom)); ++ safe_strncpy (prevChrom, chrom, sizeof(prevChrom)); } if (chromSpec == NULL) continue; -@@ -2227,7 +2236,10 @@ void op_max_with_apply +@@ -2227,7 +2227,7 @@ void op_max_with_apply v = NULL; chromSpec = find_chromosome_spec (chrom); if (chromSpec != NULL) v = chromSpec->valVector; -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy (prevChrom, chrom, sizeof(prevChrom)); -+#pragma GCC diagnostic pop +- strncpy (prevChrom, chrom, sizeof(prevChrom)); ++ safe_strncpy (prevChrom, chrom, sizeof(prevChrom)); } if (chromSpec == NULL) continue; diff --git a/multiply.c b/multiply.c -index 4c1b550..8e2fa56 100644 +index 4c1b550..d04cc41 100644 --- a/multiply.c +++ b/multiply.c -@@ -260,7 +260,10 @@ void op_multiply_apply +@@ -260,7 +260,7 @@ void op_multiply_apply if (chromSpec->flag) goto chrom_not_together; } -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy (prevChrom, chrom, sizeof(prevChrom)); -+#pragma GCC diagnostic pop +- strncpy (prevChrom, chrom, sizeof(prevChrom)); ++ safe_strncpy (prevChrom, chrom, sizeof(prevChrom)); } // if the current chromosome is not of any interest, ignore this -@@ -654,7 +657,10 @@ void op_divide_apply +@@ -654,7 +654,7 @@ void op_divide_apply if (chromSpec->flag) goto chrom_not_together; } -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy (prevChrom, chrom, sizeof(prevChrom)); -+#pragma GCC diagnostic pop +- strncpy (prevChrom, chrom, sizeof(prevChrom)); ++ safe_strncpy (prevChrom, chrom, sizeof(prevChrom)); } // if the current chromosome is not of any interest, ignore this +diff --git a/utilities.c b/utilities.c +index 03d2ff1..a0cd42a 100644 +--- a/utilities.c ++++ b/utilities.c +@@ -493,3 +493,13 @@ char* ucommatize + return s; + } + ++// ++void safe_strncpy ++ (char *dest, const char *src, size_t n) ++ { ++ #pragma GCC diagnostic push ++ #pragma GCC diagnostic ignored "-Wstringop-truncation" ++ strncpy(dest, src, n); ++ #pragma GCC diagnostic pop ++ //dest[n-1] = '\0'; // Ensure null-termination ++ } +diff --git a/utilities.h b/utilities.h +index ac9cef7..87cfc2d 100644 +--- a/utilities.h ++++ b/utilities.h +@@ -31,6 +31,8 @@ char* skip_whitespace (char* s); + char* skip_darkspace (char* s); + char* duration_to_string (float seconds); + char* ucommatize (const u32 v); ++void safe_strncpy (char *dest, const char *src, size_t n); ++ + + // miscellany +