From: Andreas Kiefer Date: Mon, 26 Feb 2024 20:08:10 +0000 (+0100) Subject: fopen: fix narrowing conversion warning on 32-bit Android X-Git-Tag: curl-8_7_0~124 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f0eacd94476b431bcea565f8f94e62e336e4fde0;p=thirdparty%2Fcurl.git fopen: fix narrowing conversion warning on 32-bit Android This was fixed in commit 06dc599405f, but came back in commit 03cb1ff4d62. When building for 32-bit ARM or x86 Android, `st_mode` is defined as `unsigned int` instead of `mode_t`, resulting in a `-Wimplicit-int-conversion` clang warning because `mode_t` is `unsigned short`. Add a cast to silence the warning, but only for 32-bit Android builds, because other architectures and platforms are not affected. Ref: https://android.googlesource.com/platform/bionic/+/refs/tags/ndk-r25c/libc/include/sys/stat.h#86 Closes https://github.com/curl/curl/pull/12998 --- diff --git a/lib/fopen.c b/lib/fopen.c index 851279fe12..0bdf2e11b6 100644 --- a/lib/fopen.c +++ b/lib/fopen.c @@ -129,7 +129,12 @@ CURLcode Curl_fopen(struct Curl_easy *data, const char *filename, } result = CURLE_WRITE_ERROR; +#if (defined(ANDROID) || defined(__ANDROID__)) && \ + (defined(__i386__) || defined(__arm__)) + fd = open(tempstore, O_WRONLY | O_CREAT | O_EXCL, (mode_t)(0600|sb.st_mode)); +#else fd = open(tempstore, O_WRONLY | O_CREAT | O_EXCL, 0600|sb.st_mode); +#endif if(fd == -1) goto fail;