summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik de Castro Lopo <erikd@mega-nerd.com>2019-09-15 12:03:56 +1000
committerErik de Castro Lopo <erikd@mega-nerd.com>2019-09-15 16:14:36 +1000
commit04974d271531d429384a6f124919ff64fbbefd81 (patch)
tree330baab536c2b9e8c79a7c69cbeccc6f7ec43b42
parent2409f5f39ddb9a4f89603eb4ff8480fa7f0726b2 (diff)
downloadflac-04974d271531d429384a6f124919ff64fbbefd81.tar.gz
Fix a number of gcc 9.2 compiler warnings
-rw-r--r--include/share/safe_str.h4
-rw-r--r--src/flac/main.c5
-rw-r--r--src/libFLAC/metadata_iterators.c7
-rw-r--r--src/metaflac/utils.c9
-rw-r--r--src/share/utf8/iconvert.c10
-rw-r--r--src/share/utf8/utf8.c3
-rw-r--r--src/test_libFLAC/metadata_manip.c6
7 files changed, 24 insertions, 20 deletions
diff --git a/include/share/safe_str.h b/include/share/safe_str.h
index eb974c51..6709334e 100644
--- a/include/share/safe_str.h
+++ b/include/share/safe_str.h
@@ -46,7 +46,9 @@ safe_strncat(char *dest, const char *src, size_t dest_size)
if (dest_size < 1)
return dest;
+ /* Assume dist has space for a term character .. */
ret = strncat(dest, src, dest_size - strlen (dest));
+ /* .. but set it explicitly. */
dest [dest_size - 1] = 0;
return ret;
@@ -60,7 +62,7 @@ safe_strncpy(char *dest, const char *src, size_t dest_size)
if (dest_size < 1)
return dest;
- ret = strncpy(dest, src, dest_size);
+ ret = strncpy(dest, src, dest_size - 1);
dest [dest_size - 1] = 0;
return ret;
diff --git a/src/flac/main.c b/src/flac/main.c
index be072a3d..780ccc50 100644
--- a/src/flac/main.c
+++ b/src/flac/main.c
@@ -1928,13 +1928,12 @@ int encode_file(const char *infilename, FLAC__bool is_first_file, FLAC__bool is_
static const char *tmp_suffix = ".tmp,fl-ac+en'c";
size_t dest_len = strlen(outfilename) + strlen(tmp_suffix) + 1;
/*@@@@ still a remote possibility that a file with this filename exists */
- if(0 == (internal_outfilename = safe_malloc_(dest_len))) {
+ if((internal_outfilename = safe_malloc_(dest_len)) == NULL) {
flac__utils_printf(stderr, 1, "ERROR allocating memory for tempfile name\n");
conditional_fclose(encode_infile);
return 1;
}
- safe_strncpy(internal_outfilename, outfilename, dest_len);
- safe_strncat(internal_outfilename, tmp_suffix, dest_len);
+ snprintf(internal_outfilename, dest_len, "%s%s", outfilename, tmp_suffix);
}
if(input_format == FORMAT_RAW) {
diff --git a/src/libFLAC/metadata_iterators.c b/src/libFLAC/metadata_iterators.c
index fca2c15e..17f25cd6 100644
--- a/src/libFLAC/metadata_iterators.c
+++ b/src/libFLAC/metadata_iterators.c
@@ -3422,9 +3422,6 @@ FLAC__bool get_file_stats_(const char *filename, struct flac_stat_s *stats)
void set_file_stats_(const char *filename, struct flac_stat_s *stats)
{
- FLAC__ASSERT(0 != filename);
- FLAC__ASSERT(0 != stats);
-
#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L)
struct timespec srctime[2] = {};
srctime[0].tv_sec = stats->st_atime;
@@ -3434,6 +3431,10 @@ void set_file_stats_(const char *filename, struct flac_stat_s *stats)
srctime.actime = stats->st_atime;
srctime.modtime = stats->st_mtime;
#endif
+
+ FLAC__ASSERT(0 != filename);
+ FLAC__ASSERT(0 != stats);
+
(void)flac_chmod(filename, stats->st_mode);
(void)flac_utime(filename, &srctime);
#if !defined _MSC_VER && !defined __BORLANDC__ && !defined __MINGW32__
diff --git a/src/metaflac/utils.c b/src/metaflac/utils.c
index a653118e..75f42bbd 100644
--- a/src/metaflac/utils.c
+++ b/src/metaflac/utils.c
@@ -61,21 +61,22 @@ char *local_strdup(const char *source)
void local_strcat(char **dest, const char *source)
{
- size_t ndest, nsource;
+ size_t ndest, nsource, outlen;
FLAC__ASSERT(0 != dest);
FLAC__ASSERT(0 != source);
- ndest = *dest? strlen(*dest) : 0;
+ ndest = *dest ? strlen(*dest) : 0;
nsource = strlen(source);
+ outlen = ndest + nsource + 1;
if(nsource == 0)
return;
*dest = safe_realloc_add_3op_(*dest, ndest, /*+*/nsource, /*+*/1);
- if(0 == *dest)
+ if(*dest == NULL)
die("out of memory growing string");
- safe_strncpy((*dest)+ndest, source, nsource + 1);
+ safe_strncat(*dest, source, outlen);
}
static inline int local_isprint(int c)
diff --git a/src/share/utf8/iconvert.c b/src/share/utf8/iconvert.c
index 472ca876..8ab53c10 100644
--- a/src/share/utf8/iconvert.c
+++ b/src/share/utf8/iconvert.c
@@ -25,6 +25,7 @@
#include <assert.h>
#include <errno.h>
#include <iconv.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -77,18 +78,17 @@ int iconvert(const char *fromcode, const char *tocode,
tocode[4] != '8' ||
tocode[5] != '\0') {
char *tocode1;
- size_t dest_len = strlen(tocode) + 11;
+ int rc;
/*
* Try using this non-standard feature of glibc and libiconv.
* This is deliberately not a config option as people often
* change their iconv library without rebuilding applications.
*/
- tocode1 = safe_malloc_(dest_len);
- if (!tocode1)
+
+ rc = asprintf(&tocode1, "%s//TRANSLIT", tocode);
+ if (rc < 0 || ! tocode1)
goto fail;
- safe_strncpy(tocode1, tocode, dest_len);
- safe_strncat(tocode1, "//TRANSLIT", dest_len);
cd2 = iconv_open(tocode1, "UTF-8");
free(tocode1);
diff --git a/src/share/utf8/utf8.c b/src/share/utf8/utf8.c
index 98a0b648..34af187b 100644
--- a/src/share/utf8/utf8.c
+++ b/src/share/utf8/utf8.c
@@ -29,6 +29,7 @@
# include <config.h>
#endif
+#include <stdio.h>
#include <stdlib.h>
#include "share/alloc.h"
@@ -180,7 +181,7 @@ static int convert_string(const char *fromcode, const char *tocode,
s = safe_malloc_add_2op_(fromlen, /*+*/1);
if (!s)
return -1;
- safe_strncpy(s, from, fromlen + 1);
+ snprintf(s, fromlen + 1, "%s", from);
*to = s;
for (; *s; s++)
if (*s & ~0x7f)
diff --git a/src/test_libFLAC/metadata_manip.c b/src/test_libFLAC/metadata_manip.c
index da10d855..f72c20ca 100644
--- a/src/test_libFLAC/metadata_manip.c
+++ b/src/test_libFLAC/metadata_manip.c
@@ -255,9 +255,6 @@ static FLAC__bool get_file_stats_(const char *filename, struct flac_stat_s *stat
static void set_file_stats_(const char *filename, struct flac_stat_s *stats)
{
- FLAC__ASSERT(0 != filename);
- FLAC__ASSERT(0 != stats);
-
#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L)
struct timespec srctime[2] = {};
srctime[0].tv_sec = stats->st_atime;
@@ -267,6 +264,9 @@ static void set_file_stats_(const char *filename, struct flac_stat_s *stats)
srctime.actime = stats->st_atime;
srctime.modtime = stats->st_mtime;
#endif
+ FLAC__ASSERT(0 != filename);
+ FLAC__ASSERT(0 != stats);
+
(void)flac_chmod(filename, stats->st_mode);
(void)flac_utime(filename, &srctime);
#if !defined _MSC_VER && !defined __MINGW32__