[PATCH] acpid: add config file and map file

Denys Vlasenko vda.linux at googlemail.com
Sat Sep 25 21:57:00 UTC 2010


On Monday 20 September 2010 13:27, Souf Oued wrote:
> Le 20/09/2010 13:00, Souf Oued a écrit :
> This patch adds these three options to acpid:
> 1/ acpid -p pidfile
> 2/ acpid -a /etc/acpid.conf
> acpid.conf syntax is like this:
> KEY ACTION
> PWRF    /etc/acpi/power_btn.sh
> BAT0    /etc/acpi/battery.sh
> ...
> 
> 3/ acpid -M /etc/acpi.map
> acpi.map syntax is like this:
> #s_type    n_type(hex)    s_code            n_code     value    description
> EV_KEY    0x01                KEY_MUTE     113           1           
> button/mute MUTE 00000080 00000000
> EV_KEY    0x01                KEY_POWER   116           1           
> button/power PWRF 00000080 00000000
> ...
> 
> The purpose of these files is to avoid using hard-coded values in acpid 
> and no longer depend on linux/input.h.
> Obviously, if there is not one of these files, acpid ensures a minimum 
> service, this makes it flexible and
> configurable for different needs

Thanks.

function                                             old     new   delta
acpid_main                                           434    1161    +727
find_action                                            -     204    +204
f_evt_tab                                              -      48     +48
packed_usage                                       27724   27750     +26
f_act_tab                                              -      16     +16
process_event                                        126       -    -126
------------------------------------------------------------------------------
(add/remove: 3/1 grow/shrink: 2/0 up/down: 1021/-126)         Total: 895 bytes
   text    data     bss     dec     hex filename
 876755     936   17196  894887   da7a7 busybox_old
 877731    1000   17196  895927   dabb7 busybox_unstripped

The growthc in data comes from 

static struct acpi_event f_evt_tab[] = {
        {"EV_KEY", 0x01, "KEY_POWER", 116, 1, "button/power PWRF 00000080 00000000"},
        {"EV_KEY", 0x01, "KEY_POWER", 116, 1, "button/power PWRB 00000080 00000000"},
};

static struct acpi_action f_act_tab[] = {
        {"PWRF", "PWRF/00000080"},
        {"LID0", "LID/00000080"},
};

Can these objects be made const?


        char dev_event[sizeof("/dev/input/event") + sizeof(int)*3];
...
        getopt32(argv, "c:e:l:dp:a:M:" IF_FEATURE_ACPID_COMPAT("g:m:s:S:v"),
                &opt_dir, &opt_input, &opt_logfile, &opt_pidfile, &opt_action, &opt_map
...
                sprintf(dev_event, opt_input, (option_mask32 & OPT_e) ? : nfd);

Looks like dev_event[] may be easily overflowed with -e LONG_STRING.


-- 
vda


More information about the busybox mailing list