components/net-snmp/patches/059.21544351.snmp_api.patch
author jenny.yung@oracle.com <jenny.yung@oracle.com>
Wed, 02 Dec 2015 16:35:50 -0800
changeset 5143 9b4a483bf8d9
parent 4755 dc5e4f992365
permissions -rw-r--r--
22242767 Upgrade GnuTLS to 3.4.6 22080473 problem in LIBRARY/GNUTLS
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4755
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     1
This patch fixes a security issue where snmp_pdu_parse() function 
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     2
could leave incompletely parsed varBind variables in the list of  
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     3
variables. A remote, unauthenticated attacker could exploit this 
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     4
flaw to cause a crash or, potentially, execute arbitrary code.
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     5
The vulnerability is fixed in the upsream and below is the link 
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     6
to the upstream bug.
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     7
https://sourceforge.net/p/net-snmp/bugs/2615/ 
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     8
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     9
--- a/snmplib/snmp_api.c	Mon Aug  3 03:34:05 2015
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    10
+++ b/snmplib/snmp_api.c	Mon Aug  3 03:31:01 2015
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    11
@@ -4270,10 +4270,9 @@
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    12
     u_char          type;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    13
     u_char          msg_type;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    14
     u_char         *var_val;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    15
-    int             badtype = 0;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    16
     size_t          len;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    17
     size_t          four;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    18
-    netsnmp_variable_list *vp = NULL;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    19
+    netsnmp_variable_list *vp = NULL, *vplast = NULL;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    20
     oid             objid[MAX_OID_LEN];
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    21
 
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    22
     /*
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    23
@@ -4408,38 +4407,23 @@
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    24
                               (ASN_SEQUENCE | ASN_CONSTRUCTOR),
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    25
                               "varbinds");
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    26
     if (data == NULL)
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    27
-        return -1;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    28
-
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    29
+        goto fail;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    30
     /*
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    31
      * get each varBind sequence 
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    32
      */
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    33
     while ((int) *length > 0) {
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    34
-        netsnmp_variable_list *vptemp;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    35
-        vptemp = (netsnmp_variable_list *) malloc(sizeof(*vptemp));
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    36
-        if (0 == vptemp) {
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    37
-            return -1;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    38
-        }
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    39
-        if (0 == vp) {
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    40
-            pdu->variables = vptemp;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    41
-        } else {
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    42
-            vp->next_variable = vptemp;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    43
-        }
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    44
-        vp = vptemp;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    45
-
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    46
-        vp->next_variable = NULL;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    47
-        vp->val.string = NULL;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    48
+        vp = SNMP_MALLOC_TYPEDEF(netsnmp_variable_list);
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    49
+        if (NULL == vp)
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    50
+            goto fail;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    51
         vp->name_length = MAX_OID_LEN;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    52
-        vp->name = 0;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    53
-        vp->index = 0;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    54
-        vp->data = 0;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    55
-        vp->dataFreeHook = 0;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    56
+        vp->type = 0;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    57
         DEBUGDUMPSECTION("recv", "VarBind");
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    58
         data = snmp_parse_var_op(data, objid, &vp->name_length, &vp->type,
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    59
                                  &vp->val_len, &var_val, length);
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    60
         if (data == NULL)
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    61
-            return -1;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    62
+            goto fail; 
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    63
         if (snmp_set_var_objid(vp, objid, vp->name_length))
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    64
-            return -1;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    65
+            goto fail;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    66
 
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    67
         len = MAX_PACKET_LENGTH;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    68
         DEBUGDUMPHEADER("recv", "Value");
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    69
@@ -4504,7 +4488,7 @@
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    70
                 vp->val.string = (u_char *) malloc(vp->val_len);
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    71
             }
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    72
             if (vp->val.string == NULL) {
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    73
-                return -1;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    74
+                goto fail;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    75
             }
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    76
             asn_parse_string(var_val, &len, &vp->type, vp->val.string,
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    77
                              &vp->val_len);
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    78
@@ -4515,7 +4499,7 @@
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    79
             vp->val_len *= sizeof(oid);
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    80
             vp->val.objid = (oid *) malloc(vp->val_len);
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    81
             if (vp->val.objid == NULL) {
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    82
-                return -1;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    83
+                goto fail;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    84
             }
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    85
             memmove(vp->val.objid, objid, vp->val_len);
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    86
             break;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    87
@@ -4527,7 +4511,7 @@
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    88
         case ASN_BIT_STR:
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    89
             vp->val.bitstring = (u_char *) malloc(vp->val_len);
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    90
             if (vp->val.bitstring == NULL) {
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    91
-                return -1;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    92
+                goto fail;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    93
             }
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    94
             asn_parse_bitstring(var_val, &len, &vp->type,
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    95
                                 vp->val.bitstring, &vp->val_len);
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    96
@@ -4534,12 +4518,25 @@
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    97
             break;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    98
         default:
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    99
             snmp_log(LOG_ERR, "bad type returned (%x)\n", vp->type);
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   100
-            badtype = -1;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   101
+            goto fail;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   102
             break;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   103
         }
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   104
         DEBUGINDENTADD(-4);
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   105
+        if (NULL == vplast) {
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   106
+            pdu->variables = vp;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   107
+        } else {
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   108
+            vplast->next_variable = vp;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   109
+        }
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   110
+        vplast = vp;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   111
+        vp = NULL;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   112
     }
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   113
-    return badtype;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   114
+    return 0;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   115
+    fail:
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   116
+      DEBUGMSGTL(("recv", "error while parsing VarBindList\n"));
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   117
+      /** if we were parsing a var, remove it from the pdu and free it */
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   118
+      if (vp)
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   119
+        snmp_free_var(vp);
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   120
+      return -1;
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   121
 }
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   122
 
dc5e4f992365 21544351 problem in UTILITY/NET-SNMP
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
   123
 /*