Commit Graph

136 Commits

Author SHA1 Message Date
Peter Howkins 68cae0c36b Handle changes needed for C23 compatibility that turns on strict ansi prototypes by default. C23 is now the default for GCC 15 2025-12-31 15:06:27 +00:00
Patrick Georgi 7ab683d29a handle missing return values 2025-12-18 22:58:26 +01:00
Patrick Georgi acdee57318 Fix issues with va_lists
Identified by clangsa.
2025-12-18 22:58:26 +01:00
Patrick Georgi aced075a9f lib/DtSvc: Free memory more soundly
It _probably_ works to just pass free(ptr) another two arguments, but
compilers don't like this kind of sloppiness anymore.
The call site only expects this function to free the first value,
ignoring the other two, so model that in the local wrapper function.
2025-12-18 22:58:26 +01:00
Patrick Georgi dca08bc5c2 terminate warning string 2025-12-18 22:58:26 +01:00
Patrick Georgi c0ad5170c9 Avoid "bool" variable name
C23 has a type of that name.
2025-12-18 22:58:26 +01:00
hyousatsu 760d36bfe9 dtlogin: use sessreg to manage utmp/wtmp. 2023-03-27 08:48:27 +00:00
Jon Trulson f0494103c3 Delete all unused/obsolete .elist files
These (export lists) aren't needed on modern compilers and haven't
been for quite awhile (like 2+ decades).
2022-08-06 17:59:05 -06:00
Jon Trulson 2d0c4d6d39 Kill off OSMAJORVERSION and OSMINORVERSION defines/cpp flags
This has meant very little for a long time as configure.ac just
hardcoded these values depending on the current OS versions at the
time.

The only place where this is really 'needed' is XlationSvc.c in DtSvc
so that differences between locale specifications on various versions
of an OS can be accounted for. So for now, we just define those when
building DtSvc.

We could probably safely remove them as well with an update to the
Xlate locale DB to remove ancient cruft we don't care about anymore.

For various other modules, like dtlogin, dtsession, etc we just use
the code that was already being used due to the hardcoded values we've
had for the last 10-ish years.
2022-08-06 17:57:44 -06:00
Chase 45cee195bd Generify source code
Previously we would fail in some parts of the code if we did not have a
premade configuration, now we use any code that was marked as Linux, BSD and
Solaris as our basis in order to support building unknown Unix systems.
2022-08-06 11:31:51 -06:00
Chase edf4319548 Discontinue HPUX support 2022-07-23 17:49:33 -06:00
Peter Howkins 1f5ec7f034 Allow the window manager to handle centered, fit and fill backdrops 2022-07-06 17:00:49 -06:00
Liang Chang c3b1d645a9 DtUtil1: fix a pointer casting issue. 2022-04-15 13:33:24 -04:00
Jon Trulson 06460abd36 DtSvc/MsgLog.c: remove extra 'noise' around log events
Previous:
-=-=-=-=
*** INFORMATION(0): dtwm: PID 1758056: Sun Feb 27 15:49:37 2022
Workspace Manager: XmeRenderTableGetDefaultFont() failed, trying a fixed font

*** [142]

-=-=-=-=

New:
-=-=-=-=
*** INFORMATION(0): dtwm: PID 1758839: Sun Feb 27 15:54:09 2022
Workspace Manager: XmeRenderTableGetDefaultFont() failed, trying a fixed font
[142 bytes]

-=-=-=-=
2022-02-27 15:58:48 -07:00
Liang Chang b4ffb694bd Merge branch 'master' into dtdocbook 2022-01-30 08:04:32 +08:00
Liang Chang 3c67bd0cb1 DtEncap: use system locales. 2022-01-26 19:50:11 +08:00
Peter Howkins b807066429 libdtsvc: Resolve Uninitialized warnings 2021-12-24 10:50:27 -07:00
Jon Trulson 31774af2f2 library versioning: try to keep the versions at 2.1.0 for all platforms 2021-12-23 13:06:44 -07:00
Jon Trulson 3a0c2ae879 Move DtXinerama.h and PamSvc.h into include/Dt/ 2021-12-21 16:42:29 -07:00
Jon Trulson 17602b4d21 Library (.so) versioning: preserve previous library version
Ticket #120

Change libtool's shared library version info to 3:0:1 to preserve the
previous library version of 2.1.0.

See https://autotools.io/libtool/version.html for the details on how
libtool handles this versioning info.

See https://verbump.de/ for a handy 'version calculator' using
libtools rules.
2021-12-16 12:40:15 -07:00
Jon Trulson 24a2f05138 Fix some shift-op-parentheses warnings 2021-12-11 17:39:35 -07:00
Jon Trulson dda11f0e38 Fix a bunch of -Wempty-body warnings reported by clang
Many of these were real bugs, like:

if (cond);
   do_something

etc...

Others were just cosmetic - like placing the ';' on a separate line to
make the intention clear.
2021-12-11 13:10:24 -07:00
Liang Chang c47e290379 Remove DtXpm. 2021-10-18 10:10:20 -06:00
OBATA Akio 16fe76ed65 Fix to include system header files for using functions 2021-10-08 14:40:56 +09:00
OBATA Akio ed90eb7f45 Change to use POSIX confirmed `select` argments unconditionally
Current condition is unsufficient, and It is already used unconditionally
in other sources.
2021-09-30 15:53:59 +09:00
Adam Sampson 67ef980644 DtSvc: fix error return from DtHelpReturnSelectedWidgetId
return(NULL) is correct for the other functions here but not for this
one, since it's meant to return a DtHELP_ error code. The man page also
says it should also set *widget to NULL on error.
2021-07-04 13:17:30 -06:00
Adam Sampson d9769e4774 DtSvc: add missing #include (for malloc) 2021-07-04 13:15:33 -06:00
Jon Trulson 369b3e89d9 Begin removal of some Imakefiles, and other no longer useful cruft
This commit will not completely remove all Imake files, specifically
those for sections that have not been completed yet.

Also, the databases dir has been moved to databases-delete-later until
we have everything building and installed properly.
2021-07-03 18:23:40 -06:00
Lev Kujawski a6ea2a2d52 Centralize catgets() calls through MsgCat
CDE has relied upon catgets() implementations following a relaxed
interpretation of the XPG internationalization standard that ignored
-1, the standard error value returned by catopen, as the catalog
argument. However, this same behavior causes segmentation faults with
the musl C library.

This patch:

- Centralizes (with the exception of ToolTalk) all calls to catopen(),
  catgets(), and catclose() through MsgCat within the DtSvc library.
- Prevents calls to catgets() and catclose() that rely upon
  undefined behavior.
- Eliminates a number of bespoke catgets() wrappers, including multiple
  redundant caching implementations designed to work around a design
  peculiarity in HP/UX.
- Eases building CDE without XPG internationalization support by providing
  the appropriate macros.
2021-06-02 19:55:15 -06:00
Jon Trulson ece5c0ea14 Merge branch 'master' into autotools-conversion
Lost the ksh93 submodule so will re-add in a later commit.
2021-01-30 19:04:10 -07:00
Jon Trulson eb381022a5 Change version to 2.3.2b for the new ksh93 submodule merge 2021-01-30 16:32:41 -07:00
Lev Kujawski 5d5523fd6a Define _DtPLATFORM_MAX_LEN for C libraries (including musl) that do not provide the SVID SYS_NMLN definition. Use sizeof() to replace another #ifdef. 2021-01-10 18:08:00 -07:00
Jon Trulson b21968f26a fix broken dev version number: 2.3.1a -> 2.3.2a 2020-11-23 17:01:37 -07:00
Jon Trulson 5852c4742f Fix erroneous uses of ${prefix} rather than $(CDE_INSTALLATION_TOP)
Some Makefiles use prefix when they should be using
CDE_INSTALLATION_TOP.

Patch by Peter G.
2020-03-23 13:10:07 -06:00
Jon Trulson 313b4a8e0b Merge branch 'master' into autotools-conversion 2020-01-26 12:17:44 -07:00
Chase b46cfa7876 Remove redundant hourglass functions 2020-01-26 12:09:12 -07:00
Jon Trulson 6b32246d06 dtsession, DtSvc: fix CVE-2020-2696/VU#308289
Marco Ivaldi <marco.ivaldi@mediaservice.net> has identified 3
vulnerabilities in CDE.

Two of them could affect our CDE (open-source version), while the 3rd
(sdtcm_convert) is Solaris specific.

The two vulnerabilities, both of which affect dtsession could allow a
local privilege escalation to root.  A POC exists for Solaris.  The
POC will not function on our CDE for two main reasons:

- the POC is Solaris specific
- The overflowed variables in question are allocated on the heap,
  whereas in Solaris these variables are located on the stack.

The first vulnerability allows an extra long palette name to be used
to cause a crash via insufficient validation in
SrvPalette.c:CheckMonitor().

The second, which has not yet been assigned a CERT CVE resides in
SmCreateDirs.c:_DtCreateDtDirs() in libDtSvc.  Due to insufficient
bounds checking, a crash or corruption can be achieved by using a very
long DISPLAY name.

This one is considered difficult to exploit, and no POC code is
available at this time.  CDE 2.x code-bases are also listed as not
vulnerable, however some work has been done anyway to do some proper
bounds checking in this function.

The following text portions are copied from the relevant advisories,
which have not been released as of this writing.

NOTE: Oracle CDE does NOT use CDE 2.3.0a or earlier as mentioned
below.  They are completely different code-bases):

Regarding CVE-2020-2692:

  A buffer overflow in the CheckMonitor() function in the Common
  Desktop Environment 2.3.0a and earlier, as distributed with Oracle
  Solaris 10 1/13 (Update 11) and earlier, allows local users to gain
  root privileges via a long palette name passed to dtsession in a
  malicious .Xdefaults file.

  Note that Oracle Solaris CDE is based on the original CDE 1.x train,
  which is different from the CDE 2.x codebase that was later open
  sourced. Most notably, the vulnerable buffer in the Oracle Solaris
  CDE is stack-based, while in the open source version it is
  heap-based.

Regarding the DtSvc bug, which does not currently have a CERT CVE:

  A difficult to exploit stack-based buffer overflow in the
  _DtCreateDtDirs() function in the Common Desktop Environment version
  distributed with Oracle Solaris 10 1/13 (Update 11) and earlier may
  allow local users to corrupt memory and potentially execute
  arbitrary code in order to escalate privileges via a long X11
  display name. The vulnerable function is located in the libDtSvc
  library and can be reached by executing the setuid program
  dtsession.

  The open source version of CDE (based on the CDE 2.x codebase) is
  not affected.
2020-01-13 19:13:23 -07:00
Jon Trulson ab023dfaed DtSvc: always use vsnprintf
There was code (_DtSimpleError() and _DtSimpleErrornoError()) that
only used snprintf when USE_SNPRINTF was defined, which it never was
of course.  We just remove the 2 checks and always use [v]snprintf.
2020-01-12 17:25:56 -07:00
Jon Trulson c329d5cfd7 Remove $(TIRPCINC) from all Makefile.am files - it no longer exists
Also, restructure some of the dependencies in the lib/tt binaries.  We
will link with libtt (which will include libtirpc as a dependency),
and XTOOLLIB - all the right X11 stuff without needing to add it to
every OS.  Removed several uneeded OS specializations ("if LINUX",
etc) as a result.
2019-11-20 18:52:29 -07:00
Jon Trulson 0d70d8b120 Set version to 2.3.1a (devel) for current master 2019-11-18 13:03:52 -07:00
Jon Trulson 5fe7ee5b67 Change CDE version info for 2.3.1 release 2019-11-15 18:04:01 -07:00
Jon Trulson 3ce0527e52 DtSvc: vastly simplify building this library
We take advantage of subdir-object and just build the subdir source
files directly as normal dependencies of libDtSvc in the top level
Makefile.am.

This means the intevening subdirectory Makefiles are no longer needed,
and no need to replicate flags and the like between the
subdirectory Makefile.am files.

Also, no need to build fake .a libs we can't really use.

configure: remove AC_OUTPUT_FILES related the the lib/DtSvc/*
subdirectories.  They are no longer needed.
2019-10-29 19:17:52 -06:00
Jon Trulson d183ade8b3 DtSvc: we can't use archive .a libs in building libDtSvc.so
We were building subsets of this library as archive.a objects, then
trying to combine them into a shared object.  This warnings, and link
failures due to the lack of 0fPIC when building the archive libraries.

Now, we do not buld archive libraries, and the main libDtSvc.so
library is build by adding all of the .lo file in the component
subdirectories.

In a future commit, we could just remove the SUBDIR builds (DtUtil1,
etc) and build the sub objects directly.
2019-10-29 18:11:42 -06:00
Jon Trulson d7e5206d6b DtSvc/DtUtil2: fix implicit function declarations 2019-10-28 14:30:43 -06:00
Jon Trulson dbce2e4337 DtSvc/DtUtil1: fix implicit function declarations 2019-10-28 14:30:36 -06:00
Jon Trulson c0e3f08c9f DtSvc/DtUtil2: fix implicit function declarations 2019-10-28 13:27:47 -06:00
Jon Trulson 951ae0d327 DtSvc/DtUtil1: fix implicit function declarations 2019-10-28 13:22:09 -06:00
Jon Trulson 1079ffa240 configure: create some convenience AC_SUBST's for the global includes
Modify the various makefiles that were doing $(top_builddir)/include/Dt
to use them like @DT_INCDIR@, @TT_INCDIR@, etc...
2019-10-26 14:30:36 -06:00
Jon Trulson 43387e7368 libDtSvc: get it to build 2019-10-25 18:33:06 -06:00
Jon Trulson 0d78e17036 DtSvc,DtXinerama: More include fixes to deal with new order. 2019-10-25 18:06:54 -06:00