From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Dehan Meng <demeng@redhat.com>
Cc: qemu-devel@nongnu.org, kkostiuk@redhat.com, michael.roth@amd.com,
peter.maydell@linaro.org
Subject: Re: [PATCH v2 4/4] For correcting code style: Variable declarations moved to the beginning of blocks Followed the coding style of using snake_case for variable names. And merged redundant route and networkroute variables.
Date: Mon, 14 Oct 2024 11:06:09 +0100 [thread overview]
Message-ID: <ZwztEZ3D3uWxbdkU@redhat.com> (raw)
In-Reply-To: <20241011031937.92216-5-demeng@redhat.com>
Same comment about $SUBJECT being too long. You need a blank line after
the 1st line in the commit message.
On Fri, Oct 11, 2024 at 11:19:37AM +0800, Dehan Meng wrote:
> Signed-off-by: Dehan Meng <demeng@redhat.com>
> ---
> qga/commands-linux.c | 116 ++++++++++++++++++++-----------------------
> 1 file changed, 53 insertions(+), 63 deletions(-)
>
> diff --git a/qga/commands-linux.c b/qga/commands-linux.c
> index 4f0e38be81..c6cca630ef 100644
> --- a/qga/commands-linux.c
> +++ b/qga/commands-linux.c
> @@ -2094,12 +2094,12 @@ GuestCpuStatsList *qmp_guest_get_cpustats(Error **errp)
> return head;
> }
>
> -static char *hexToIPAddress(const void *hexValue, int is_ipv6)
> +static char *hex_to_ip_address(const void *hex_value, int is_ipv6)
> {
> if (is_ipv6) {
> char addr[INET6_ADDRSTRLEN];
> struct in6_addr in6;
> - const char *hexStr = (const char *)hexValue;
> + const char *hex_str = (const char *)hex_value;
> int i;
>
> for (i = 0; i < 16; i++) {
> @@ -2111,11 +2111,11 @@ static char *hexToIPAddress(const void *hexValue, int is_ipv6)
>
> return g_strdup(addr);
> } else {
> - unsigned int hexInt = *(unsigned int *)hexValue;
> - unsigned int byte1 = (hexInt >> 24) & 0xFF;
> - unsigned int byte2 = (hexInt >> 16) & 0xFF;
> - unsigned int byte3 = (hexInt >> 8) & 0xFF;
> - unsigned int byte4 = hexInt & 0xFF;
> + unsigned int hex_int = *(unsigned int *)hex_value;
> + unsigned int byte1 = (hex_int >> 24) & 0xFF;
> + unsigned int byte2 = (hex_int >> 16) & 0xFF;
> + unsigned int byte3 = (hex_int >> 8) & 0xFF;
> + unsigned int byte4 = hex_int & 0xFF;
>
> return g_strdup_printf("%u.%u.%u.%u", byte4, byte3, byte2, byte1);
> }
> @@ -2131,6 +2131,7 @@ GuestNetworkRouteList *qmp_guest_network_get_route(Error **errp)
> int firstLine;
> int is_ipv6;
> int i;
> + char iface[IFNAMSIZ];
>
> for (i = 0; i < 2; i++) {
> firstLine = 1;
> @@ -2146,72 +2147,61 @@ GuestNetworkRouteList *qmp_guest_network_get_route(Error **errp)
> firstLine = 0;
> continue;
> }
> - GuestNetworkRoute *route = NULL;
> - GuestNetworkRoute *networkroute;
> - char Iface[IFNAMSIZ];
> - if (is_ipv6) {
> - char Destination[33], Source[33], NextHop[33];
> - int DesPrefixlen, SrcPrefixlen, Metric, RefCnt, Use, Flags;
>
> - /* Parse the line and extract the values */
> + GuestNetworkRoute *route = g_new0(GuestNetworkRoute, 1);
> +
> + if (is_ipv6) {
> + char destination[33], source[33], next_hop[33];
> + int des_prefixlen, src_prefixlen, metric, refcnt, use, flags;
> if (sscanf(line, "%32s %x %32s %x %32s %x %x %x %x %s",
> - Destination, &DesPrefixlen, Source,
> - &SrcPrefixlen, NextHop, &Metric, &RefCnt,
> - &Use, &Flags, Iface) != 10) {
> + destination, &des_prefixlen, source,
> + &src_prefixlen, next_hop, &metric, &refcnt,
> + &use, &flags, iface) != 10) {
> continue;
> }
>
> - route = g_new0(GuestNetworkRoute, 1);
By moving this up to the time of declaration of 'route', you've introduced
a memory leak when the above 'sscanf' line triggers the 'continue' branch.
> - networkroute = route;
> - networkroute->iface = g_strdup(Iface);
> - networkroute->destination = hexToIPAddress(Destination, 1);
> - networkroute->metric = Metric;
> - networkroute->source = hexToIPAddress(Source, 1);
> - networkroute->desprefixlen = g_strdup_printf(
> - "%d", DesPrefixlen
> - );
> - networkroute->srcprefixlen = g_strdup_printf(
> - "%d", SrcPrefixlen
> - );
> - networkroute->nexthop = hexToIPAddress(NextHop, 1);
> - networkroute->has_flags = true;
> - networkroute->flags = Flags;
> - networkroute->has_refcnt = true;
> - networkroute->refcnt = RefCnt;
> - networkroute->has_use = true;
> - networkroute->use = Use;
> - networkroute->version = 6;
> - } else {
> - unsigned int Destination, Gateway, Mask, Flags;
> - int RefCnt, Use, Metric, MTU, Window, IRTT;
> + route->iface = g_strdup(iface);
> + route->destination = hex_to_ip_address(destination, 1);
> + route->source = hex_to_ip_address(source, 1);
> + route->nexthop = hex_to_ip_address(next_hop, 1);
> + route->desprefixlen = g_strdup_printf("%d", des_prefixlen);
> + route->srcprefixlen = g_strdup_printf("%d", src_prefixlen);
> + route->metric = metric;
> + route->has_flags = true;
> + route->flags = flags;
> + route->has_refcnt = true;
> + route->refcnt = refcnt;
> + route->has_use = true;
> + route->use = use;
> + route->version = 6;
>
> - /* Parse the line and extract the values */
> + } else {
> + unsigned int destination, gateway, mask, flags;
> + int refcnt, use, metric, mtu, window, irtt;
> if (sscanf(line, "%s %X %X %x %d %d %d %X %d %d %d",
> - Iface, &Destination, &Gateway, &Flags, &RefCnt,
> - &Use, &Metric, &Mask, &MTU, &Window, &IRTT) != 11) {
> + iface, &destination, &gateway, &flags, &refcnt,
> + &use, &metric, &mask, &mtu, &window, &irtt) != 11) {
> continue;
> }
>
> - route = g_new0(GuestNetworkRoute, 1);
Again, introduced a memory leak for the same reason.
> - networkroute = route;
> - networkroute->iface = g_strdup(Iface);
> - networkroute->destination = hexToIPAddress(&Destination, 0);
> - networkroute->gateway = hexToIPAddress(&Gateway, 0);
> - networkroute->mask = hexToIPAddress(&Mask, 0);
> - networkroute->metric = Metric;
> - networkroute->has_flags = true;
> - networkroute->flags = Flags;
> - networkroute->has_refcnt = true;
> - networkroute->refcnt = RefCnt;
> - networkroute->has_use = true;
> - networkroute->use = Use;
> - networkroute->has_mtu = true;
> - networkroute->mtu = MTU;
> - networkroute->has_window = true;
> - networkroute->window = Window;
> - networkroute->has_irtt = true;
> - networkroute->irtt = IRTT;
> - networkroute->version = 4;
> + route->iface = g_strdup(iface);
> + route->destination = hex_to_ip_address(&destination, 0);
> + route->gateway = hex_to_ip_address(&gateway, 0);
> + route->mask = hex_to_ip_address(&mask, 0);
> + route->metric = metric;
> + route->has_flags = true;
> + route->flags = flags;
> + route->has_refcnt = true;
> + route->refcnt = refcnt;
> + route->has_use = true;
> + route->use = use;
> + route->has_mtu = true;
> + route->mtu = mtu;
> + route->has_window = true;
> + route->window = window;
> + route->has_irtt = true;
> + route->irtt = irtt;
> + route->version = 4;
> }
>
> QAPI_LIST_APPEND(tail, route);
> --
> 2.40.1
>
>
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2024-10-14 10:07 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-11 3:19 [PATCH v2 0/4] qemu-ga: Fix some potential issues find by coverity Dehan Meng
2024-10-11 3:19 ` [PATCH v2 1/4] sscanf return values are checked to ensure correct parsing Dehan Meng
2024-10-14 9:55 ` Daniel P. Berrangé
2024-10-11 3:19 ` [PATCH v2 2/4] Proper initialization of n to 0 for getline to function correctly Dehan Meng
2024-10-14 9:57 ` Daniel P. Berrangé
2024-10-11 3:19 ` [PATCH v2 3/4] Avoiding freeing line prematurely. It's now only freed at the end of the function Dehan Meng
2024-10-14 9:59 ` Daniel P. Berrangé
2024-10-11 3:19 ` [PATCH v2 4/4] For correcting code style: Variable declarations moved to the beginning of blocks Followed the coding style of using snake_case for variable names. And merged redundant route and networkroute variables Dehan Meng
2024-10-14 10:06 ` Daniel P. Berrangé [this message]
2024-10-11 16:12 ` [PATCH v2 0/4] qemu-ga: Fix some potential issues find by coverity Konstantin Kostiuk
-- strict thread matches above, loose matches on Subject: below --
2024-10-21 13:28 Dehan Meng
2024-10-21 13:28 ` [PATCH v2 4/4] For correcting code style: Variable declarations moved to the beginning of blocks Followed the coding style of using snake_case for variable names. And merged redundant route and networkroute variables Dehan Meng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZwztEZ3D3uWxbdkU@redhat.com \
--to=berrange@redhat.com \
--cc=demeng@redhat.com \
--cc=kkostiuk@redhat.com \
--cc=michael.roth@amd.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.