__do_free char *buf = NULL;
__do_fclose FILE *f = NULL;
int ret;
- long flen;
+ ssize_t flen;
+ ssize_t nbytes;
if (!fnam)
return -1;
if (!buf)
return log_error_errno(-1, ENOMEM, "Out of memory");
- if (fread(buf, 1, flen, f) != flen)
+ nbytes = fread(buf, 1, flen, f);
+ if (nbytes < 0 || nbytes != flen)
return log_error_errno(-1, errno, "Failed to read template");
buf[flen] = '\0';
if (ret)
return log_trace_errno(-errno, errno, "Failed to stat \"/dev/null\"");
- for (int i = 0; i < ARRAY_SIZE(std_fds); i++) {
+ for (size_t i = 0; i < ARRAY_SIZE(std_fds); i++) {
ret = fstat(std_fds[i], &st);
if (ret) {
SYSWARN("Failed to stat standard I/O file descriptor %d", std_fds[i]);
bool multiply_overflow(int64_t base, uint64_t mult, int64_t *res)
{
- if (base > 0 && base > (INT64_MAX / mult))
+ if (base > 0 && base > (int64_t)(INT64_MAX / mult))
return false;
- if (base < 0 && base < (INT64_MIN / mult))
+ if (base < 0 && base < (int64_t)(INT64_MIN / mult))
return false;
- *res = base * mult;
+ *res = (int64_t)(base * mult);
return true;
}