mirror of
https://dev.iopsys.eu/bbf/bbfdm.git
synced 2025-12-10 07:44:39 +01:00
Return error if the called path is invalid wildcard path
This commit is contained in:
parent
c6244449c0
commit
ea8afbf980
2 changed files with 14 additions and 9 deletions
|
|
@ -275,15 +275,10 @@ int dm_entry_param_method(struct dmctx *ctx, int cmd, char *inparam, char *arg1,
|
|||
|
||||
switch(cmd) {
|
||||
case CMD_GET_VALUE:
|
||||
if (ctx->in_param[0] == '.' && DM_STRLEN(ctx->in_param) == 1)
|
||||
fault = FAULT_9005;
|
||||
else
|
||||
fault = dm_entry_get_value(ctx);
|
||||
break;
|
||||
case CMD_GET_NAME:
|
||||
if (ctx->in_param[0] == '.' && DM_STRLEN(ctx->in_param) == 1)
|
||||
fault = FAULT_9005;
|
||||
else if (arg1 && string_to_bool(arg1, &ctx->nextlevel) == 0)
|
||||
if (arg1 && string_to_bool(arg1, &ctx->nextlevel) == 0)
|
||||
fault = dm_entry_get_name(ctx);
|
||||
else
|
||||
fault = FAULT_9003;
|
||||
|
|
|
|||
|
|
@ -1296,6 +1296,11 @@ int dm_entry_get_value(struct dmctx *dmctx)
|
|||
unsigned char findparam_check = 0;
|
||||
DMOBJ *root = dmctx->dm_entryobj;
|
||||
DMNODE node = {.current_object = ""};
|
||||
unsigned int len = DM_STRLEN(dmctx->in_param);
|
||||
|
||||
if ((len > 2 && dmctx->in_param[len - 1] == '.' && dmctx->in_param[len - 2] == '*') ||
|
||||
(dmctx->in_param[0] == '.' && len == 1))
|
||||
return FAULT_9005;
|
||||
|
||||
if (dmctx->in_param[0] == '\0' || rootcmp(dmctx->in_param, root->obj) == 0) {
|
||||
dmctx->inparam_isparam = 0;
|
||||
|
|
@ -1306,7 +1311,7 @@ int dm_entry_get_value(struct dmctx *dmctx)
|
|||
dmctx->findparam = 1;
|
||||
dmctx->stop = 0;
|
||||
findparam_check = 1;
|
||||
} else if (dmctx->in_param[DM_STRLEN(dmctx->in_param) - 1] == '.') {
|
||||
} else if (dmctx->in_param[len - 1] == '.') {
|
||||
dmctx->inparam_isparam = 0;
|
||||
dmctx->findparam = 0;
|
||||
dmctx->stop = 0;
|
||||
|
|
@ -1406,8 +1411,13 @@ int dm_entry_get_name(struct dmctx *ctx)
|
|||
DMOBJ *root = ctx->dm_entryobj;
|
||||
DMNODE node = {.current_object = ""};
|
||||
unsigned char findparam_check = 0;
|
||||
unsigned int len = DM_STRLEN(ctx->in_param);
|
||||
int err = 0;
|
||||
|
||||
if ((len > 2 && ctx->in_param[len - 1] == '.' && ctx->in_param[len - 2] == '*') ||
|
||||
(ctx->in_param[0] == '.' && len == 1))
|
||||
return FAULT_9005;
|
||||
|
||||
if (ctx->nextlevel == 0 && (ctx->in_param[0] == '\0' || rootcmp(ctx->in_param, root->obj) == 0)) {
|
||||
ctx->inparam_isparam = 0;
|
||||
ctx->findparam = 1;
|
||||
|
|
@ -1427,7 +1437,7 @@ int dm_entry_get_name(struct dmctx *ctx)
|
|||
ctx->in_param = root->obj;
|
||||
node.matched = 1;
|
||||
findparam_check = 1;
|
||||
} else if (*(ctx->in_param + DM_STRLEN(ctx->in_param) - 1) == '.') {
|
||||
} else if (*(ctx->in_param + len - 1) == '.') {
|
||||
ctx->inparam_isparam = 0;
|
||||
ctx->findparam = 0;
|
||||
ctx->stop = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue