Project

General

Profile

Enhancement #750 » 0020-sanitize-a-bit-involved-size_t-cast-for-get_str_elem.patch

Loïc Gomez, 2022-01-10 19:28

View differences:

src/irc.c
720 720
	int index = 0;
721 721

  
722 722
	while ((c = strchr(cur, PASS_SEP))) {
723
		long len = c - cur;
723 724
		if (index < num) {
724 725
			index++;
725 726
			cur = c + 1;
726 727
			continue;
727 728
		}
728
		if (c - cur < 1)
729
		if (len < 1)
729 730
			return NULL;
730
		ret = bip_malloc(c - cur + 1);
731
		memcpy(ret, cur, c - cur);
732
		ret[c - cur] = 0;
731
		// len always > 0
732
		ret = bip_malloc((size_t)len + 1);
733
		memcpy(ret, cur, (size_t)len);
734
		ret[len] = 0;
733 735
		return ret;
734 736
	}
735 737
	if (index == num) {
738
		long len;
736 739
		c = str + strlen(str);
737
		if (c - cur < 1)
740
		len = c - cur;
741
		if (len < 1)
738 742
			return NULL;
739
		ret = bip_malloc(c - cur + 1);
740
		memcpy(ret, cur, c - cur);
741
		ret[c - cur] = 0;
743
		ret = bip_malloc((size_t)len + 1);
744
		memcpy(ret, cur, (size_t)len);
745
		ret[len] = 0;
742 746
		return ret;
743 747
	}
744 748
	return NULL;
745
- 
(19-19/24)