Skip to content
Snippets Groups Projects
  • Martin Fuzzey's avatar
    9636bf8b
    env: Fix warning when forcing environment without ENV_ACCESS_IGNORE_FORCE · 9636bf8b
    Martin Fuzzey authored
    
    Since commit 0f036bf4 ("env: Warn on force access if ENV_ACCESS_IGNORE_FORCE set")
    a warning message is displayed when setenv -f is used WITHOUT
    CONFIG_ENV_ACCESS_IGNORE_FORCE, but the variable is set anyway, resulting
    in lots of log pollution.
    
    env_flags_validate() returns 0 if the access is accepted, or non zero
    if it is refused.
    
    So the original code
    	#ifndef CONFIG_ENV_ACCESS_IGNORE_FORCE
    		if (flag & H_FORCE)
    			return 0;
    	#endif
    
    was correct, it returns 0 (accepts the modification) if forced UNLESS
    IGNORE_FORCE is set (in which case access checks in the following code
    are applied). The broken patch just added a printf to the force accepted
    case.
    
    To obtain the intent of the patch we need this:
    	if (flag & H_FORCE) {
    	#ifdef CONFIG_ENV_ACCESS_IGNORE_FORCE
    		printf("## Error: Can't force access to \"%s\"\n", name);
    	#else
    		return 0;
    	#endif
    	}
    
    Fixes: 0f036bf4 ("env: Warn on force access if ENV_ACCESS_IGNORE_FORCE set")
    
    Signed-off-by: default avatarMartin Fuzzey <martin.fuzzey@flowbird.group>
    9636bf8b
    History
    env: Fix warning when forcing environment without ENV_ACCESS_IGNORE_FORCE
    Martin Fuzzey authored
    
    Since commit 0f036bf4 ("env: Warn on force access if ENV_ACCESS_IGNORE_FORCE set")
    a warning message is displayed when setenv -f is used WITHOUT
    CONFIG_ENV_ACCESS_IGNORE_FORCE, but the variable is set anyway, resulting
    in lots of log pollution.
    
    env_flags_validate() returns 0 if the access is accepted, or non zero
    if it is refused.
    
    So the original code
    	#ifndef CONFIG_ENV_ACCESS_IGNORE_FORCE
    		if (flag & H_FORCE)
    			return 0;
    	#endif
    
    was correct, it returns 0 (accepts the modification) if forced UNLESS
    IGNORE_FORCE is set (in which case access checks in the following code
    are applied). The broken patch just added a printf to the force accepted
    case.
    
    To obtain the intent of the patch we need this:
    	if (flag & H_FORCE) {
    	#ifdef CONFIG_ENV_ACCESS_IGNORE_FORCE
    		printf("## Error: Can't force access to \"%s\"\n", name);
    	#else
    		return 0;
    	#endif
    	}
    
    Fixes: 0f036bf4 ("env: Warn on force access if ENV_ACCESS_IGNORE_FORCE set")
    
    Signed-off-by: default avatarMartin Fuzzey <martin.fuzzey@flowbird.group>