summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2024-08-31meson: add check for reallocf() and fix inclusion of config.hAlan Coopersmith1-0/+1
Fixes: 72a0065 ("Add _XkbReallocF & _XkbTypedReallocF definitions") Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxkbfile/-/merge_requests/21>
2024-08-26Use _XkbReallocF to avoid memory leaks when realloc() failsAlan Coopersmith1-1/+1
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxkbfile/-/merge_requests/20>
2024-08-26Use _XkbTypedReallocF to avoid memory leaks when realloc() failsAlan Coopersmith2-12/+12
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxkbfile/-/merge_requests/20>
2024-08-26Add _XkbReallocF & _XkbTypedReallocF definitionsAlan Coopersmith1-0/+23
Uses reallocf() variant of realloc() that frees old pointer on failure to make avoiding memory leaks easier. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxkbfile/-/merge_requests/20>
2024-08-26XkbRF_AddVarToDescribe: avoid memory leak if only one of the malloc failsAlan Coopersmith1-0/+2
If one malloc failed and the other succeeded, we assumed both failed, and let the successful one leak. Found by gcc 14.1: maprules.c: In function ‘XkbRF_AddVarToDescribe’: maprules.c:1125:22: warning: leak of ‘<unknown>’ [CWE-401] [-Wanalyzer-malloc-leak] 1125 | rules->extra = NULL; | ^ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxkbfile/-/merge_requests/20>
2024-08-26Fix 4 -Wuseless-cast warnings from gcc 14.1Alan Coopersmith3-7/+5
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxkbfile/-/merge_requests/20>
2024-07-13WriteXKMIndicators: dereference pointer after checking for NULL, not beforeAlan Coopersmith1-1/+4
Found by gcc 14.1: xkmout.c: In function ‘WriteXKMIndicators’: xkmout.c:728:8: warning: check of ‘**result.xkb.indicators’ for NULL after already dereferencing it [-Wanalyzer-deref-before-check] 728 | if (xkb->indicators != NULL) { | ^ [...] ‘WriteXKMIndicators’: events 22-23 | | 727 | size += xkmPutCARD32(file, xkb->indicators->phys_indicators); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (22) pointer ‘**result.xkb.indicators’ is dereferenced here | 728 | if (xkb->indicators != NULL) { | | ~ | | | | | (23) pointer ‘**result.xkb.indicators’ is checked for NULL here but it was already dereferenced at (22) Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxkbfile/-/merge_requests/19>
2024-04-22Assume target platforms have strcasecmp nowAlan Coopersmith2-22/+1
It has been required since Unix98/SUSv2 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxkbfile/-/merge_requests/18>
2024-03-18Add XkbRF_FreeVarDefs() a destructor for XkbRF_VarDefsRec.Alexander Golubev1-1/+27
The function properly frees memory allocated for XkbRF_VarDefsRec by XkbRF_GetNamesProp(). Based on original contribution by Martin Weber <martin.weber@secunet.com> Closes: https://gitlab.freedesktop.org/xorg/lib/libxkbfile/-/issues/6 Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
2023-11-08Add a meson build systemAlan Coopersmith2-1/+47
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2023-10-08Fix -Wsign-compare warnings in xkbtext.c & xkmread.cAlan Coopersmith2-9/+8
xkbtext.c: In function ‘XkbNKNDetailMaskText’: xkbtext.c:588:37: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 588 | for (len = 0, i = 0, bit = 1; i < NUM_NKN; i++, bit <<= 1) { | ^ xkbtext.c:597:37: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 597 | for (len = 0, i = 0, bit = 1; i < NUM_NKN; i++, bit <<= 1) { | ^ xkmread.c: In function ‘XkmSkipPadding’: xkmread.c:118:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] 118 | for (i = 0; i < pad; i++) { | ^ xkmread.c: In function ‘ReadXkmKeycodes’: xkmread.c:254:54: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] 254 | for (pAl = xkb->names->key_aliases, i = 0; i < nAl; i++, pAl++) { | ^ xkmread.c: In function ‘ReadXkmCompatMap’: xkmread.c:452:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] 452 | for (i = 0; i < num_si; i++, interp++) { | ^ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2023-10-08XkbIndentText: Fix -Wsign-compare warningAlan Coopersmith1-1/+1
xkbtext.c: In function ‘XkbIndentText’: xkbtext.c:1529:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] 1529 | for (i = 0; i < size; i++) { | ^ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2023-10-08xkbtext.c: Add tbGetBufferString helper functionAlan Coopersmith1-20/+21
Handles common case of allocating & copying string to temporary buffer As a side effect, clears up gcc warning: xkbtext.c: In function ‘XkbBehaviorText’: xkbtext.c:1476:19: warning: declaration of ‘tmp’ shadows a previous local [-Wshadow] 1476 | char *tmp; | ^~~ xkbtext.c:1457:21: note: shadowed declaration is here 1457 | char buf[256], *tmp; | ^~~ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2023-10-08DefaultParser: avoid -Wimplicit-fallthrough warningsAlan Coopersmith1-32/+34
Clears up 24 warnings from gcc 12 of the form: xkbconfig.c: In function ‘DefaultParser’: xkbconfig.c:469:36: warning: this statement may fall through [-Wimplicit-fallthrough=] 469 | case _XkbCF_RulesFile: if (!str) str = &rtrn->rules_file; | ^ xkbconfig.c:470:5: note: here 470 | case _XkbCF_Model: if (!str) str = &rtrn->model; | ^~~~ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2023-10-08XkbWriteCFile: stop leaking header file ifdef nameAlan Coopersmith1-3/+4
Found by gcc 12 analyzer: cout.c:1106:8: warning: leak of ‘hdrdef’ [CWE-401] [-Wanalyzer-malloc-leak] 1106 | if (!ok) { | ^ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2023-10-08XkbCFReportError: avoid -Wformat-nonliteral warningAlan Coopersmith1-15/+15
xkbconfig.c: In function ‘XkbCFReportError’: xkbconfig.c:1344:5: warning: format not a string literal, argument types not checked [-Wformat-nonliteral] 1344 | fprintf(file, msg, line); | ^~~~~~~ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2023-10-08XkbChangeAtomDisplay: stop leaking atom nameAlan Coopersmith1-5/+6
Found by gcc 12 analyzer: xkbatom.c: In function ‘XkbChangeAtomDisplay’: xkbatom.c:218:16: warning: leak of ‘tmp’ [CWE-401] [-Wanalyzer-malloc-leak] xkbatom.c:220:12: warning: leak of ‘tmp’ [CWE-401] [-Wanalyzer-malloc-leak] 220 | return XInternAtom(dpy, name, onlyIfExists); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Fixes: 5e5bd09 ("Fix offline operation.") Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2023-10-08_XkbInitAtoms: check for malloc() failureAlan Coopersmith1-6/+4
Handles gcc 12 analyzer warning: xkbatom.c: In function ‘_XkbInitAtoms’: xkbatom.c:194:21: warning: dereference of possibly-NULL ‘nodeTable’ [CWE-690] [-Wanalyzer-possible-null-dereference] 194 | nodeTable[None] = (NodePtr) NULL; | ^ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2023-10-08_XkbMakeAtom: remove check for impossible caseAlan Coopersmith1-2/+1
nd->string is always the result of a new allocation, so can never be equal to string. This resolves a warning from the gcc 12 analyzer, which reported a memory leak if the impossible condition was ever true: In file included from xkbatom.c:85: xkbatom.c: In function ‘_XkbMakeAtom’: XKBfileInt.h:51:33: warning: leak of ‘<unknown>’ [CWE-401] [-Wanalyzer-malloc-leak] [...] | 158 | if (!table) { | | ^ | | | | | (15) following ‘true’ branch (when ‘table’ is NULL)... | 159 | if (nd->string != string) | | ~~ ~ | | | | | | | (17) following ‘false’ branch... | | (16) ...to here | 161 | _XkbFree(nd); | | ^~~~~~~~ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2023-03-25Set close-on-exec when opening filesAlan Coopersmith1-4/+9
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-08-20Fix check for appending '|' character when applying rulesRan Benita1-1/+1
There are two ways to separate multiple files in XKB include statements: '+' will cause the later file to override the first in case of conflict, while '|' will cause it augment it (this is done by xkbcomp). '!' is unrelated here. Currently, if someone tries to use '|' in a rule instead of '+', it won't have any effect. Since '|' is practically never used, this wasn't noticed. Signed-off-by: Ran Benita <ran234@gmail.com>
2022-06-05fix an off-by-one error in copying the name of a virtual modifierBenno Schulenberg1-1/+1
This fixes issue #9. Bug existed since commit 816a8db326 from sixteen years ago. Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
2020-09-02unifdef NOTYETPeter Hutterer2-25/+0
This has been ifdef'd out since at least 2003, time to accept that it won't be handled. One part was unreachable code anyway, the second part affects GeomDoodads which are unnecessary and barely used anyway. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2020-06-19Escape non-printable characters correctlyPeter Hutterer1-1/+1
This is the equivalent patch to xserver commit eaf1f72ed8994b708d94ec2de7b1a99f5c4a39b8: XkbStringText escapes non-printable characters using octal numbers. Such escape sequence would be at most 5 characters long ("\0123"), so it reserves 5 bytes in the buffer. Due to char->unsigned int conversion, it would print much longer string for negative numbers. Fixes https://gitlab.freedesktop.org/xorg/lib/libxkbfile/-/issues/8 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-03-29Convert check for strcasecmp to normal autoconf styleAlan Coopersmith2-2/+2
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2019-03-29Use strndup if available to avoid -Wstringop-overflow warning from gcc 9Alan Coopersmith1-3/+9
Reported in https://gitlab.freedesktop.org/xorg/lib/libxkbfile/issues/5 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2018-03-24correcting mathematical nonsenseMartin Burggraf1-3/+11
V2: Fixing the issue with numbers between 0 -1 Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2016-01-01Fix mistyped argument of sizeofAndreas Wettstein1-3/+3
A pointer rather than the buffer was given to sizeof. As the data to be written is only one or two bytes, a pointer size is at least four bytes, and the buffer has 32 bytes, this error did not have negative effects. Signed-off-by: Andreas Wettstein <wettstein509@solnet.ch> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2016-01-01Add support for genKeyEvent flagAndreas Wettstein1-0/+2
ActionMessage has an optional flag genKeyEvent. This change makes sure this flag is printed when it is set. Signed-off-by: Andreas Wettstein <wettstein509@solnet.ch> Reviewed-By: Ran Benita <ran234@gmail.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2016-01-01Add missing support for NoLock and NoUnlock flagsAndreas Wettstein1-2/+46
The LockMods, ISOLock and LockControls support an "affect" flag to selectively enable and disable locking and unlocking for these actions. This change adds output of these flags. Signed-off-by: Andreas Wettstein <wettstein509@solnet.ch> Reviewed-By: Ran Benita <ran234@gmail.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2014-11-27Remove unnecessary check.Jörg Sonnenberger1-1/+1
The vmods member of XkbNamesPtr is an array and thus never NULL. Signed-off-by: Thomas Klausner <wiz@NetBSD.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-11-08Remove check to see if SEEK_SET is defined before using itAlan Coopersmith1-4/+0
Other references to SEEK_SET in this file are made without checking, since they assume everyone has either reached C89 by now or will use the fallback #define at the top of the file, so we can stop checking here as well. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-10-28Constify atom name argument to XkbInternAtomAlan Coopersmith1-2/+2
Matches XInternAtom, which it wraps, and quiets a bunch of const warnings in xkbcomp. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ran Benita <ran234@gmail.com>
2013-10-28Convert sprintf calls to snprintfAlan Coopersmith3-114/+128
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ran Benita <ran234@gmail.com>
2013-10-28Don't dereference xkb pointer until after checking it for NULLAlan Coopersmith1-8/+8
Some compilers can perform mind-twistingly evil optimizations if you check for NULL after using it, others just let you segv. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ran Benita <ran234@gmail.com>
2013-10-28unifdef -UXKB_IN_SERVERAlan Coopersmith7-120/+0
Xserver has its own copy of this code now, so we don't need to keep an unused copy in libxkbfile too. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Ran Benita <ran234@gmail.com>
2013-10-20Convert to X.Org standard indentation styleAlan Coopersmith14-7630/+8130
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-01-18Replace deprecated Automake INCLUDES variable with AM_CPPFLAGSAlan Coopersmith1-4/+2
Excerpt https://lists.gnu.org/archive/html/automake/2012-12/msg00038.html - Support for the long-deprecated INCLUDES variable will be removed altogether in Automake 1.14. The AM_CPPFLAGS variable should be used instead. This variable was deprecated in Automake releases prior to 1.10, which is the current minimum level required to build X. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2011-11-16Add const attributes to fix gcc -Wwrite-strings warningsAlan Coopersmith7-18/+20
Does not fix all of them, as some affect the API and thus need more analysis. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
2011-11-11Include strings.h for strcasecmpJeremy Huddleston1-0/+1
Our minimum requirement for X11 is currently Unix98. Unix98 provides strcasecmp in <strings.h>. This commit fixes implicit declarations of this function on systems that closely adhere to the standard. Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
2011-09-16Strip trailing whitespaceAlan Coopersmith12-168/+168
Performed with: find * -type f | xargs perl -i -p -e 's{[ \t]+$}{}' git diff -w & git diff -b show no diffs from this change Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2010-10-06Purge cvs tags.Jesse Adkins14-28/+0
Signed-off-by: Jesse Adkins <jesserayadkins@gmail.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2010-07-08Purge macro NEED_EVENTSFernando Carrijo6-6/+0
Signed-off-by: Fernando Carrijo <fcarrijo@yahoo.com.br> Acked-by: Tiago Vignatti <tiago.vignatti@nokia.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2009-10-06Migrate to xorg macros 1.3 & XORG_DEFAULT_OPTIONSAlan Coopersmith1-1/+1
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
2009-05-08Semi-revert 33b839e16fe681ba915658f824ceb1b252084ea4Adam Jackson4-33/+39
_XkbDupString() checks for NULL, strdup doesn't. Still, implement in terms of real strdup and skip the calloc.
2009-05-07Use flockfile if available.Adam Jackson1-0/+10
Not really a huge improvement, but we might as well.
2009-05-07s/_XkbDupString/strdup/Adam Jackson4-50/+34
Super special bonus lols edition: _XkbDupString would allocate the new string with calloc, just to be extra sure.
2009-01-29Janitor: distcheck, compiler warnings, .gitignore.Paulo Cesar Pereira de Andrade5-11/+12
2009-01-15Fix static buffer overflow in "xkbcomp -C :0"Kees Cook1-5/+21
This patch uses dynamically allocated strings instead of the fixed-length buffers to avoid stack overflows. https://bugs.freedesktop.org/show_bug.cgi?id=19490 https://bugs.launchpad.net/ubuntu/+source/x11-xkb-utils/+bug/309013 Signed-off-by: Kees Cook <kees.cook@canonical.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-01-15Apply partial matches for option (#19563)Alexey Ten1-0/+1
Rules which match star (*) and option, like one below, should be applied layout[2] option = symbols * misc:typo = +typo(base) X.Org bug 19563 <http://bugs.freedesktop.org/show_bug.cgi?id=19563> Signed-off-by: Sergey V. Udaltsov <svu@gnome.org>