[PATCH 1/2] lib: fwts_ac_adapter: fix readdir(ac_power_dir) failing

Colin Ian King colin.king at canonical.com
Thu Jan 10 09:23:15 UTC 2019


On 10/01/2019 05:34, Alex Hung wrote:
> As readdir() returns next directory, readdir(ac_power_dir) needs to be
> closed and re-opened.
> 
> Signed-off-by: Alex Hung <alex.hung at canonical.com>
> ---
>  src/lib/src/fwts_ac_adapter.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/src/lib/src/fwts_ac_adapter.c b/src/lib/src/fwts_ac_adapter.c
> index 9dd828f7..de2242a2 100644
> --- a/src/lib/src/fwts_ac_adapter.c
> +++ b/src/lib/src/fwts_ac_adapter.c
> @@ -90,6 +90,7 @@ int fwts_ac_adapter_get_state(const int state, int *matching, int *not_matching)
>  			return FWTS_ERROR;
>  		}
>  
> +		(void)closedir(ac_power_dir);
>  		ac_interface = &fwts_ac_interfaces[SYS_INTERFACE];
>  	/* then try older /proc interface  */
>  	} else if ((ac_power_dir = opendir(FWTS_PROC_ACPI_AC_ADAPTER))) {
> @@ -98,6 +99,8 @@ int fwts_ac_adapter_get_state(const int state, int *matching, int *not_matching)
>  		return FWTS_ERROR;
>  	}
>  
> +	if (!(ac_power_dir = opendir(FWTS_SYS_CLASS_POWER_SUPPLY)))
> +		return FWTS_ERROR;

This may open the wrong directory, there could be the case where the
older /proc interface is being used in which case re-opening
FWTS_SYS_CLASS_POWER_SUPPLY is not correct.

I'd prefer just using rewinddir(ac_power_dir) instead.


>  	do {
>  		entry = readdir(ac_power_dir);
>  		if (entry && strlen(entry->d_name) > 2) {
> 




More information about the fwts-devel mailing list