From: Andre Noll Date: Fri, 30 Dec 2016 14:58:41 +0000 (+0100) Subject: Merge branch 'refs/heads/t/invalid-ids' X-Git-Tag: v0.5.7~4 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=121015ff5cdbe6af7b84f6245ebe62fe2a52a859;hp=b5f9618cde29dfe0871b420c54c094362e3b5dc6 Merge branch 'refs/heads/t/invalid-ids' A single patch that was in misc for a while, and two follow up fixups that were detected after the branch was merged into next. * refs/heads/t/invalid-ids (cooking for two weeks): Makefile: Don't compile with -Wformat-signedness unconditionally. aft.c: Use correct format string for error output. touch: Refuse to set an invalid image or lyrics ID. --- diff --git a/NEWS.md b/NEWS.md index a7af7717..3d00528d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -15,6 +15,7 @@ NEWS - The wma decoder and audio format handler now correctly decodes files with unusual block sizes. - We now compile with -Wformat-signedness if possible. +- The touch command now refuses to set an invalid image or lyrics ID. Download: [tarball](./releases/paraslash-git.tar.bz2) @@ -42,6 +43,7 @@ not mentioned here have accumulated and are also part of the release. - para_gui no longer reports 100% playing time at the stream start. - Opus cleanups. +Downloads: [tarball](./releases/paraslash-0.5.6.tar.bz2), [signature](./releases/paraslash-0.5.6.tar.bz2.asc) diff --git a/aft.c b/aft.c index 77891342..bfcd1fb0 100644 --- a/aft.c +++ b/aft.c @@ -2044,6 +2044,22 @@ static int com_touch_callback(struct afs_callback_arg *aca) .data = aca, .action = touch_audio_file }; + if (cto->image_id >= 0) { + ret = img_get_name_by_id(cto->image_id, NULL); + if (ret < 0) { + para_printf(&aca->pbout, "invalid image ID: %d\n", + cto->image_id); + return ret; + } + } + if (cto->lyrics_id >= 0) { + ret = lyr_get_name_by_id(cto->lyrics_id, NULL); + if (ret < 0) { + para_printf(&aca->pbout, "invalid lyrics ID: %d\n", + cto->lyrics_id); + return ret; + } + } if (cto->flags & TOUCH_FLAG_FNM_PATHNAME) pmd.fnmatch_flags |= FNM_PATHNAME; ret = for_each_matching_row(&pmd); diff --git a/blob.c b/blob.c index 7a7ae756..ed684428 100644 --- a/blob.c +++ b/blob.c @@ -487,7 +487,8 @@ static int blob_get_name_by_id(struct osl_table *table, uint32_t id, struct osl_object obj = {.data = &id, .size = sizeof(id)}; int ret; - *name = NULL; + if (name) + *name = NULL; if (!id) return 1; ret = osl(osl_get_row(table, BLOBCOL_ID, &obj, &row)); @@ -498,7 +499,8 @@ static int blob_get_name_by_id(struct osl_table *table, uint32_t id, return ret; if (*(char *)obj.data == '\0') return -E_DUMMY_ROW; - *name = (char *)obj.data; + if (name) + *name = (char *)obj.data; return 1; }