Skip to content

Commit 5cfb27d

Browse files
committed
Do not silently ignore the userdata if it is too big
Instead error out when writing the solv file.
1 parent fc694cf commit 5cfb27d

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

src/repo_write.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1179,9 +1179,9 @@ repowriter_set_userdata(Repowriter *writer, const void *data, int len)
11791179
{
11801180
writer->userdata = solv_free(writer->userdata);
11811181
writer->userdatalen = 0;
1182-
if (len < 0 || len >= 65536)
1182+
if (len <= 0)
11831183
return;
1184-
writer->userdata = len ? solv_memdup(data, len) : 0;
1184+
writer->userdata = solv_memdup(data, len);
11851185
writer->userdatalen = len;
11861186
}
11871187

@@ -1249,6 +1249,9 @@ repowriter_write(Repowriter *writer, FILE *fp)
12491249

12501250
Id type_constantid = 0;
12511251

1252+
/* sanity checks */
1253+
if (writer->userdatalen < 0 || writer->userdatalen >= 65536)
1254+
return pool_error(pool, -1, "illegal userdata length: %d", writer->userdatalen);
12521255

12531256
memset(&cbdata, 0, sizeof(cbdata));
12541257
cbdata.pool = pool;

0 commit comments

Comments
 (0)