Fix example/subsystem_netconf.c

Christian Weisgerber naddy at mips.inka.de
Sat Sep 11 22:33:45 CEST 2021


In libssh2's example/subsystem_netconf.c, a pointer to a variable
of the wrong size (on LP64) is passed.  Ouch.  The patch below fixes
this and also eliminates the %n format specifier that is increasingly
discouraged:

--- example/subsystem_netconf.c.orig
+++ example/subsystem_netconf.c
@@ -257,14 +257,14 @@ int main(int argc, char *argv[])
     /* NETCONF: https://tools.ietf.org/html/draft-ietf-netconf-ssh-06 */
 
     fprintf(stderr, "Sending NETCONF client <hello>\n");
-    snprintf(buf, sizeof(buf),
+    len = snprintf(buf, sizeof(buf),
       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
       "<hello>"
       "<capabilities>"
       "<capability>urn:ietf:params:xml:ns:netconf:base:1.0</capability>"
       "</capabilities>"
       "</hello>\n"
-      "]]>]]>\n%n", (int *)&len);
+      "]]>]]>\n");
     if(-1 == netconf_write(channel, buf, len))
         goto shutdown;
 
@@ -277,12 +277,12 @@ int main(int argc, char *argv[])
             (int)len, buf);
 
     fprintf(stderr, "Sending NETCONF <rpc>\n");
-    snprintf(buf, sizeof(buf),
+    len = snprintf(buf, sizeof(buf),
       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
       "<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"
       "<get-interface-information><terse/></get-interface-information>"
       "</rpc>\n"
-      "]]>]]>\n%n", (int *)&len);
+      "]]>]]>\n");
     if(-1 == netconf_write(channel, buf, len))
         goto shutdown;
 
-- 
Christian "naddy" Weisgerber                          naddy at mips.inka.de


More information about the libssh2-devel mailing list