From 5e8a772b092c42443986c14bc53a9e42f9b33ee3 Mon Sep 17 00:00:00 2001 From: Takashi Sakamoto Date: Mon, 16 Nov 2020 11:45:41 +0900 Subject: [PATCH] rawmidi: add checks for method arguments In Rules for use of GError, it's just used for recoverable runtime error, not for programming error. The invalid arguments are a kind of programming error. This commit adds the check for method arguments. Signed-off-by: Takashi Sakamoto --- src/rawmidi/query.c | 10 ++++------ src/rawmidi/stream-pair.c | 31 ++++++++++++++++--------------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/rawmidi/query.c b/src/rawmidi/query.c index 8dd3f91..657594d 100644 --- a/src/rawmidi/query.c +++ b/src/rawmidi/query.c @@ -193,7 +193,7 @@ void alsarawmidi_get_device_id_list(guint card_id, guint **entries, } } if (index != count) { - generate_error(error, ENOENT); + g_warn_if_reached(); g_free(*entries); *entries = NULL; goto end; @@ -225,6 +225,7 @@ void alsarawmidi_get_rawmidi_sysname(guint card_id, guint device_id, struct udev *ctx; struct udev_device *dev; + g_return_if_fail(sysname != NULL); g_return_if_fail(error == NULL || *error == NULL); length = strlen(RAWMIDI_SYSNAME_TEMPLATE) + calculate_digits(card_id) + @@ -272,6 +273,7 @@ void alsarawmidi_get_rawmidi_devnode(guint card_id, guint device_id, struct udev_device *dev; const char *node; + g_return_if_fail(devnode != NULL); g_return_if_fail(error == NULL || *error == NULL); length = strlen(RAWMIDI_SYSNAME_TEMPLATE) + calculate_digits(card_id) + @@ -423,13 +425,9 @@ void alsarawmidi_get_substream_info(guint card_id, guint device_id, { struct snd_rawmidi_info *info; + g_return_if_fail(substream_info != NULL); g_return_if_fail(error == NULL || *error == NULL); - if (substream_info == NULL) { - generate_error(error, EINVAL); - return; - } - *substream_info = g_object_new(ALSARAWMIDI_TYPE_SUBSTREAM_INFO, NULL); rawmidi_substream_info_refer_private(*substream_info, &info); diff --git a/src/rawmidi/stream-pair.c b/src/rawmidi/stream-pair.c index 92f32f5..04fe5d3 100644 --- a/src/rawmidi/stream-pair.c +++ b/src/rawmidi/stream-pair.c @@ -188,26 +188,20 @@ void alsarawmidi_stream_pair_open(ALSARawmidiStreamPair *self, guint card_id, g_return_if_fail(ALSARAWMIDI_IS_STREAM_PAIR(self)); priv = alsarawmidi_stream_pair_get_instance_private(self); - g_return_if_fail(error == NULL || *error == NULL); - // The flag is used to attach substreams for each direction. - if (access_modes & ~(ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_OUTPUT | - ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_INPUT)) { - generate_error(error, EINVAL); - return; - } + g_return_if_fail((access_modes & ~(ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_OUTPUT | + ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_INPUT)) == 0); + g_return_if_fail(error == NULL || *error == NULL); if ((access_modes & ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_OUTPUT) && - (access_modes & ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_INPUT)) { + (access_modes & ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_INPUT)) open_flag = O_RDWR; - } else if (access_modes & ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_OUTPUT) { + else if (access_modes & ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_OUTPUT) open_flag = O_WRONLY; - } else if (access_modes & ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_INPUT) { + else if (access_modes & ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_INPUT) open_flag = O_RDONLY; - } else { - generate_error(error, EINVAL); - return; - } + else + g_return_if_reached(); alsarawmidi_get_rawmidi_devnode(card_id, device_id, &devnode, error); if (*error != NULL) @@ -261,6 +255,7 @@ void alsarawmidi_stream_pair_get_protocol_version(ALSARawmidiStreamPair *self, g_return_if_fail(ALSARAWMIDI_IS_STREAM_PAIR(self)); priv = alsarawmidi_stream_pair_get_instance_private(self); + g_return_if_fail(proto_ver_triplet != NULL); g_return_if_fail(error == NULL || *error == NULL); if (priv->fd < 0) { @@ -294,6 +289,7 @@ void alsarawmidi_stream_pair_get_substream_info(ALSARawmidiStreamPair *self, g_return_if_fail(ALSARAWMIDI_IS_STREAM_PAIR(self)); priv = alsarawmidi_stream_pair_get_instance_private(self); + g_return_if_fail(substream_info != NULL); g_return_if_fail(error == NULL || *error == NULL); *substream_info = g_object_new(ALSARAWMIDI_TYPE_SUBSTREAM_INFO, NULL); @@ -331,6 +327,7 @@ void alsarawmidi_stream_pair_set_substream_params(ALSARawmidiStreamPair *self, g_return_if_fail(ALSARAWMIDI_IS_STREAM_PAIR(self)); priv = alsarawmidi_stream_pair_get_instance_private(self); + g_return_if_fail(substream_params != NULL); g_return_if_fail(error == NULL || *error == NULL); rawmidi_substream_params_refer_private(substream_params, ¶ms); @@ -362,9 +359,9 @@ void alsarawmidi_stream_pair_get_substream_status(ALSARawmidiStreamPair *self, struct snd_rawmidi_status *status; g_return_if_fail(ALSARAWMIDI_IS_STREAM_PAIR(self)); - g_return_if_fail(substream_status != NULL); priv = alsarawmidi_stream_pair_get_instance_private(self); + g_return_if_fail(substream_status != NULL); g_return_if_fail(error == NULL || *error == NULL); rawmidi_substream_status_refer_private(*substream_status, &status); @@ -399,6 +396,8 @@ void alsarawmidi_stream_pair_read_from_substream(ALSARawmidiStreamPair *self, g_return_if_fail(ALSARAWMIDI_IS_STREAM_PAIR(self)); priv = alsarawmidi_stream_pair_get_instance_private(self); + g_return_if_fail(buf != NULL); + g_return_if_fail(buf_size != NULL); g_return_if_fail(error == NULL || *error == NULL); len = read(priv->fd, *buf, *buf_size); @@ -435,6 +434,7 @@ void alsarawmidi_stream_pair_write_to_substream(ALSARawmidiStreamPair *self, g_return_if_fail(ALSARAWMIDI_IS_STREAM_PAIR(self)); priv = alsarawmidi_stream_pair_get_instance_private(self); + g_return_if_fail(buf != NULL); g_return_if_fail(error == NULL || *error == NULL); len = write(priv->fd, buf, buf_size); @@ -575,6 +575,7 @@ void alsarawmidi_stream_pair_create_source(ALSARawmidiStreamPair *self, g_return_if_fail(ALSARAWMIDI_IS_STREAM_PAIR(self)); priv = alsarawmidi_stream_pair_get_instance_private(self); + g_return_if_fail(gsrc != NULL); g_return_if_fail(error == NULL || *error == NULL); if (priv->fd < 0) { -- 2.47.3