commit: Null terminate `target_buf` var
authorLuke Yang <luke.jia.yang@gmail.com>
Wed, 12 Jun 2024 19:51:41 +0000 (15:51 -0400)
committerLuke Yang <luke.jia.yang@gmail.com>
Thu, 20 Jun 2024 19:09:11 +0000 (15:09 -0400)
Coverity points out that we are passing an unterminated string to
sprintf(). Fix by using snprintf() which stores the content as a C
string.

src/libostree/ostree-repo-commit.c

index 7a898757cb8f8b8d40971f4cf04a15c240ee862b..4d12d5ecb4cde3ba5d068f397a45724a40eea77a 100644 (file)
@@ -815,8 +815,8 @@ _try_clone_from_payload_link (OstreeRepo *self, OstreeRepo *dest_repo, const cha
       if (size < OSTREE_SHA256_STRING_LEN + _OSTREE_PAYLOAD_LINK_PREFIX_LEN)
         return glnx_throw (error, "invalid data size for %s", loose_path_buf);
 
-      sprintf (target_checksum, "%.2s%.62s", target_buf + _OSTREE_PAYLOAD_LINK_PREFIX_LEN,
-               target_buf + _OSTREE_PAYLOAD_LINK_PREFIX_LEN + 3);
+      snprintf (target_checksum, size, "%.2s%.62s", target_buf + _OSTREE_PAYLOAD_LINK_PREFIX_LEN,
+                target_buf + _OSTREE_PAYLOAD_LINK_PREFIX_LEN + 3);
 
       _ostree_loose_path (loose_path_target_buf, target_checksum, OSTREE_OBJECT_TYPE_FILE,
                           self->mode);