Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ifconfig(8) diff: one strdup less in trunk_status()

0 views
Skip to first unread message

Vladimir Kirillov

unread,
Dec 19, 2009, 2:16:06 PM12/19/09
to
Hello tech@!

Not sure this strdup() is required just to print the actor_mac.
Should it be removed?

Index: ifconfig.c
===================================================================
RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v
retrieving revision 1.226
diff -u -p -r1.226 ifconfig.c
--- ifconfig.c 14 Dec 2009 17:22:58 -0000 1.226
+++ ifconfig.c 19 Dec 2009 19:15:15 -0000
@@ -4360,21 +4360,16 @@ trunk_status(void)
if (isport)
printf(" trunkdev %s", rp.rp_ifname);
putchar('\n');
- if (ra.ra_proto == TRUNK_PROTO_LACP) {
- char *act_mac = strdup(
- ether_ntoa((struct ether_addr*)lp->actor_mac));
- if (act_mac == NULL)
- err(1, "strdup");
+ if (ra.ra_proto == TRUNK_PROTO_LACP)
printf("\ttrunk id: [(%04X,%s,%04X,%04X,%04X),\n"
"\t\t (%04X,%s,%04X,%04X,%04X)]\n",
- lp->actor_prio, act_mac,
+ lp->actor_prio,
+ ether_ntoa((struct ether_addr *)lp->actor_mac),
lp->actor_key, lp->actor_portprio, lp->actor_portno,
lp->partner_prio,
ether_ntoa((struct ether_addr*)lp->partner_mac),
lp->partner_key, lp->partner_portprio,
lp->partner_portno);
- free(act_mac);
- }

for (i = 0; i < ra.ra_ports; i++) {
printf("\t\ttrunkport %s ", rpbuf[i].rp_portname);

Claudio Jeker

unread,
Dec 19, 2009, 2:36:24 PM12/19/09
to
On Sat, Dec 19, 2009 at 09:16:06PM +0200, Vladimir Kirillov wrote:
> Hello tech@!
>
> Not sure this strdup() is required just to print the actor_mac.
> Should it be removed?

No. Please read the ether_ntoa manpage:
"It returns a pointer to a static structure that is reused for each call."
In other words you can not call ether_ntoa() twice in a printf().

--
:wq Claudio

0 new messages