Re: [PATCH v3 6/7] v4l-utils/dvb: add COUNTRY property

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

Hello Coverity detected that dvb_guess_user_country introduces a
resource leak (CID 1250445).

On 31/10/14 14:13, tskd08@xxxxxxxxx wrote:
> +enum dvb_country_t dvb_guess_user_country(void)
> +{
> +	char * buf, * pch, * pbuf;
> +	unsigned cat;
> +	enum dvb_country_t id = COUNTRY_UNKNOWN;
> +
> +	for (cat = 0; cat < sizeof(cats)/sizeof(cats[0]); cat++) {
> +
> +		// the returned char * should be "C", "POSIX" or something valid.
> +		// If valid, we can only *guess* which format is returned.
> +		// Assume here something like "de_DE.iso8859-1@euro" or "de_DE.utf-8"
> +		buf = secure_getenv(cats[cat]);
> +		if (! buf || strlen(buf) < 2)
> +			continue;
> +
> +		buf = strdup(buf);
> +		pbuf= buf;
> +
> +		if (! strncmp(buf, "POSIX", MIN(strlen(buf), 5)) ||
> +		    ! (strncmp(buf, "en", MIN(strlen(buf), 2)) && !isalpha(buf[2])) )
> +			continue;
> +
> +		// assuming 'language_country.encoding@variant'
> +
> +		// country after '_', if given
> +		if ((pch = strchr(buf, '_')))
> +			pbuf = pch + 1;
> +
> +		// remove all after '@', including '@'
> +		if ((pch = strchr(pbuf, '@')))
> +			*pch = 0;
> +
> +		// remove all after '.', including '.'
> +		if ((pch = strchr(pbuf, '.')))
> +			*pch = 0;
> +
> +		if (strlen(pbuf) == 2)
> +			id = dvb_country_a2_to_id(pbuf);
> +		free(buf);
> +		if (id != COUNTRY_UNKNOWN)
> +			return id;
> +	}
> +
> +	return COUNTRY_UNKNOWN;
> +}

pbuf / buf may get leaked due to the continue statement.

Could you please post a patch?

Thanks,
Gregor
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux