if (nentries == 0)
ERROR(RXGEN_OPCODE); /* Use EvalVolumeSet1 */
+ if (nentries < 0)
+ nentries = 0;
+ if (nentries > bulkentries.nbulkentries_len)
+ nentries = bulkentries.nbulkentries_len;
+
/* Step through each entry and add it to the list of volumes */
entries = bulkentries.nbulkentries_val;
for (e = 0; e < nentries; e++) {
cellHandle->vos_new = 0;
}
} else {
+ if (*entriesp < 0)
+ *entriesp = 0;
+ if (*entriesp > blkentriesp->nbulkentries_len)
+ *entriesp = blkentriesp->nbulkentries_len;
rc = 1;
}
} else {
ubik_VL_ListAttributes(cellHandle->vos, 0, attrp,
entriesp, &arrayEntries);
if (tst == 0) {
+
+ if (*entriesp < 0)
+ *entriesp = 0;
+ if (*entriesp > arrayEntries.bulkentries_len)
+ *entriesp = arrayEntries.bulkentries_len;
+
blkentriesp->nbulkentries_val =
(nvldbentry *) malloc(*entriesp * sizeof(*blkentriesp));
if (blkentriesp->nbulkentries_val != NULL) {
if (arrayEntries.bulkentries_val) {
free(arrayEntries.bulkentries_val);
}
+
rc = 1;
}
}
if (code)
return code;
+ /* Ensure the number of entries claimed matches the no. returned */
+ if (*entriesp < 0)
+ *entriesp = 0;
+ if (*entriesp > arrayEntries.bulkentries_len)
+ *entriesp = arrayEntries.bulkentries_len;
+
convertBulkToNBulk(&arrayEntries, blkentriesp);
xdr_free((xdrproc_t) xdr_bulkentries, &arrayEntries);
newvlserver = vltype_new;
}
}
+
+ if (code)
+ return code;
+
+ /* Ensure the number of entries claimed matches the no. returned */
+ if (*entriesp < 0)
+ *entriesp = 0;
+ if (*entriesp > blkentriesp->nbulkentries_len)
+ *entriesp = blkentriesp->nbulkentries_len;
+
return code;
}
code =
ubik_VL_ListAttributesN2(cstruct, 0, attrp, (name ? name : ""),
thisindex, nentriesp, blkentriesp, nextindexp);
+ if (code)
+ return code;
+
+ /* Ensure the number of entries claimed matches the no. returned */
+ if (*nentriesp < 0)
+ *nentriesp = 0;
+ if (*nentriesp > blkentriesp->nbulkentries_len)
+ *nentriesp = blkentriesp->nbulkentries_len;
}
return code;
}