~peter-hutterer/evemu/evemu-event

« back to all changes in this revision

Viewing changes to tools/evemu-event.c

  • Committer: Peter Hutterer
  • Date: 2012-06-06 01:26:34 UTC
  • Revision ID: peter.hutterer@who-t.net-20120606012634-os87tlldy42ytvne
Range-check argument values for evemu-event

type must be less than EV_MAX
code's maximum is effectively KEY_MAX but let's use USHRT_MAX to be safe for
future key additions
value is int value range

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 ****************************************************************************/
21
21
 
22
22
#include "evemu.h"
 
23
#include <limits.h>
23
24
#include <stdio.h>
24
25
#include <fcntl.h>
25
26
#include <string.h>
53
54
 
54
55
        arg = argv[idx++];
55
56
        type = strtol(arg, &endp, 0);
56
 
        if (*arg == '\0' || *endp != '\0') {
 
57
        if (*arg == '\0' || *endp != '\0' || type < 0 || type > EV_MAX) {
57
58
                fprintf(stderr, "error: invalid type argument '%s'\n", arg);
58
59
                goto out;
59
60
        }
60
61
 
61
62
        arg = argv[idx++];
62
63
        code = strtol(arg, &endp, 0);
63
 
        if (*arg == '\0' || *endp != '\0') {
 
64
        if (*arg == '\0' || *endp != '\0' || code < 0 || code > USHRT_MAX) {
64
65
                fprintf(stderr, "error: invalid code argument '%s'\n", arg);
65
66
                goto out;
66
67
        }
67
68
 
68
69
        arg = argv[idx++];
69
70
        value = strtol(arg, &endp, 0);
70
 
        if (*arg == '\0' || *endp != '\0') {
 
71
        if (*arg == '\0' || *endp != '\0' || value < INT_MIN || value > INT_MAX) {
71
72
                fprintf(stderr, "error: invalid value argument '%s'\n", arg);
72
73
                goto out;
73
74
        }