summaryrefslogtreecommitdiffstats
path: root/lib/libdevstat
diff options
context:
space:
mode:
authorken <ken@FreeBSD.org>1998-10-14 23:28:26 +0000
committerken <ken@FreeBSD.org>1998-10-14 23:28:26 +0000
commit68b03ab551368c9e52815b2d9c98a47bb6f7a264 (patch)
tree2ba66031598ce09f9ab5d0f25c06a0e93e874d7c /lib/libdevstat
parent65106e9e36cd7a54af9cd409d1942a3a2b58170e (diff)
downloadFreeBSD-src-68b03ab551368c9e52815b2d9c98a47bb6f7a264.zip
FreeBSD-src-68b03ab551368c9e52815b2d9c98a47bb6f7a264.tar.gz
Fix a couple of potential buffer overrun cases.
Submitted by: imp
Diffstat (limited to 'lib/libdevstat')
-rw-r--r--lib/libdevstat/devstat.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/libdevstat/devstat.c b/lib/libdevstat/devstat.c
index 6211909..ec86c78 100644
--- a/lib/libdevstat/devstat.c
+++ b/lib/libdevstat/devstat.c
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: devstat.c,v 1.2 1998/09/18 02:35:25 ken Exp $
+ * $Id: devstat.c,v 1.3 1998/09/20 00:11:09 ken Exp $
*/
#include <sys/types.h>
@@ -193,8 +193,10 @@ checkversion(void)
strncat(devstat_errbuf, tmpstr,
DEVSTAT_ERRBUF_SIZE - buflen - 1);
buflen += errlen;
- } else
+ } else {
strncpy(devstat_errbuf, tmpstr, DEVSTAT_ERRBUF_SIZE);
+ devstat_errbuf[DEVSTAT_ERRBUF_SIZE - 1] = '\0';
+ }
if (version < DEVSTAT_VERSION)
snprintf(tmpstr, sizeof(tmpstr),
@@ -510,6 +512,7 @@ selectdevs(struct device_selection **dev_select, int *num_selected,
strncpy((*dev_select)[i].device_name,
devices[i].device_name,
DEVSTAT_NAME_LEN);
+ (*dev_select)[i].device_name[DEVSTAT_NAME_LEN - 1]='\0';
(*dev_select)[i].unit_number = devices[i].unit_number;
(*dev_select)[i].position = i;
}
@@ -531,7 +534,8 @@ selectdevs(struct device_selection **dev_select, int *num_selected,
for (i = 0; (i < *num_selections) && (num_dev_selections > 0); i++) {
char tmpstr[80];
- sprintf(tmpstr, "%s%d", (*dev_select)[i].device_name,
+ snprintf(tmpstr, sizeof(tmpstr), "%s%d",
+ (*dev_select)[i].device_name,
(*dev_select)[i].unit_number);
for (j = 0; j < num_dev_selections; j++) {
if (strcmp(tmpstr, dev_selections[j]) == 0) {
@@ -998,7 +1002,7 @@ buildmatch(char *match_str, struct devstat_match **matches, int *num_matches)
* or interface.
*/
if ((*matches)[*num_matches].num_match_categories != (i + 1)) {
- sprintf(devstat_errbuf,
+ snprintf(devstat_errbuf, sizeof(devstat_errbuf),
"%s: unknown match item \"%s\"", func_name,
tstr[i]);
return(-1);
OpenPOWER on IntegriCloud