Commit Diff


commit - 986364d26ba1975d29998bfe6a8268d29f20bd86
commit + 075f71338af24057d9f8428bd94ea736ff315254
blob - 8a164634eaf5b24148df8b8910fce1d44931becf
blob + d801d102e297511104f1e436a10bb3d214df1204
--- main.c
+++ main.c
@@ -803,8 +803,8 @@ extends_config_table(struct agentx_varbind *vb)
 {
 	struct agentx_object *obj;
 	struct command *cmd;
-	size_t i;
-	char displaystring[256];
+	size_t i, n;
+	char displaystring[256], *in;
 
 	if ((cmd = extends_find_cmd(vb)) == NULL) {
 		agentx_varbind_notfound(vb);
@@ -812,9 +812,11 @@ extends_config_table(struct agentx_varbind *vb)
 	}
 	obj = agentx_varbind_get_object(vb);
 	agentx_varbind_set_index_string(vb, token, cmd->token);
-	if (obj == command)
-		agentx_varbind_string(vb, cmd->command);
-	else if (obj == args) {
+	if (obj == command) {
+		if ((n = strlen(cmd->command)) > 255)
+			n = 255;
+		agentx_varbind_nstring(vb, cmd->command, n);
+	} else if (obj == args) {
 		displaystring[0] = '\0';
 		for (i = 0; cmd->args != NULL && cmd->args[i] != NULL; i++) {
 			if (i != 0)
@@ -824,9 +826,12 @@ extends_config_table(struct agentx_varbind *vb)
 			    sizeof(displaystring));
 		}
 		agentx_varbind_string(vb, displaystring);
-	} else if (obj == input)
-		agentx_varbind_string(vb, cmd->input != NULL ? cmd->input : "");
-	else if (obj == cachetime)
+	} else if (obj == input) {
+		in = cmd->input != NULL ? cmd->input : "";
+		if ((n = strlen(in)) > 255)
+			n = 255;
+		agentx_varbind_nstring(vb, in, n);
+	} else if (obj == cachetime)
 		agentx_varbind_integer(vb, cmd->cachetime);
 	else if (obj == exectype)
 		agentx_varbind_integer(vb, cmd->exectype);
@@ -933,7 +938,7 @@ extends_output2_table(struct agentx_varbind *vb)
 		break;
 	case AGENTX_REQUEST_TYPE_GETNEXT:
 		/* Increments later */
-		if (line <= 1024)
+		if (lidx <= 1024)
 			lidx++;
 		break;
 	case AGENTX_REQUEST_TYPE_GETNEXTINCLUSIVE: