commit d340f2dfcd6461c9743dccdabe3b610f5fbc8fe8
Author: Jens Nyberg I <jens.i.nyberg@ericsson.com>
Date:   Wed Nov 30 12:01:09 2011 -0500

    Fix ipcalc_netmask
    
    1) make the bitmask creation simpler to understand.
    
    2) effectively increase string length for inet_ntop result by 1 (it
       already takes the terminating NULL into account).

diff --git a/src/xslt_ext.c b/src/xslt_ext.c
index a059f3b..f35f19b 100644
--- a/src/xslt_ext.c
+++ b/src/xslt_ext.c
@@ -72,10 +72,10 @@ static void ipcalc_netmask(xmlXPathParserContextPtr ctxt, int nargs) {
     struct in_addr netmask;
     xmlChar netmask_str[16];
 
-    netmask.s_addr = htonl(~((1 << (32 - prefix)) - 1));
+    netmask.s_addr = htonl(~(0xffffffffu >> prefix));
 
     if (! inet_ntop(AF_INET, &netmask,
-                    (char *) netmask_str, sizeof(netmask_str) - 1)) {
+                    (char *) netmask_str, sizeof(netmask_str))) {
         xsltTransformError(xsltXPathGetTransformContext(ctxt), NULL, NULL,
                     "ipcalc:netmask: internal error: inet_ntop failed");
         goto error;
