Commit Graph

78 Commits

Author SHA1 Message Date
Patrick Georgi 7ab683d29a handle missing return values 2025-12-18 22:58:26 +01:00
Patrick Georgi ae767ed3dc Mark error handlers as "noreturn"
Match X headers to satisfy newer compilers.
2025-12-18 22:58:26 +01:00
Chase f38cd20c5c dtmail: remove DEAD_WOOD code 2025-11-30 16:26:42 -07: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 9a9d586e87 configure: detect libdl 2022-07-31 18:33:49 -06:00
Chase edf4319548 Discontinue HPUX support 2022-07-23 17:49:33 -06:00
Jon Trulson 75c377065a dtprintinfo: ParseJobs.C: fix some compile errors for solaris
The whole parsing function for solaris printing is really bad and needs
rewritten.
2022-01-15 11:58:12 -07:00
Peter Howkins 341fdfbe71 various: Window objects should be initialised to 0 not NULL 2021-12-24 10:50:28 -07:00
Peter Howkins 16c3ed3650 dtprintinfo: Resolve format-overflow issues 2021-12-24 10:50:28 -07:00
Peter Howkins 3600e87527 dtprintinfo: Resolve uninitialized warnings 2021-12-24 10:50:28 -07:00
Jon Trulson a77253f9ce Fix a Wself-assign-field clang warning
The arg that should be on the rhs seems to be commented out for some
reason, and assigning a variable to itself is pointless, so just
comment it out with a comment explaining why.
2021-12-12 13:43:44 -07:00
Jon Trulson 237a3a4d94 DtSetPref.C: fix some pointer<->int conversions 2021-10-23 15:47:21 -06:00
Liang Chang f05a7b12c8 dtprintinfo: use libXpm directly. 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
Jon Trulson 51646fb06a programs/: remove Imakefiles for completed modules 2021-07-03 19:12:43 -06:00
Jon Trulson 297918bb56 dtprintinfo: try to mitigate some stupid in ParseJob.C for sun
Marco Ivaldi pointed me to some unsafe code in ParseJob.c.  I do not
have a sun machine (well, not currently operational anyway), so the
code is not tested.  But seriously, this is some horrible code.  This
local parser for sun needs to be rewritten!
2021-06-02 19:56:28 -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
Lev Kujawski 9a695e9411 dtprintinfo: don't use rresvport() on Linux systems using the musl C library
Disable binding a privileged client port with rresvport() on Linux
systems using the musl C library, where that function is
unsupported. If there is a need for XPrint support, a BSD-licensed
implementation of rresvport() is available in the portable edition of
OpenSSH.
2021-01-30 17:22:27 -07:00
Chase b46cfa7876 Remove redundant hourglass functions 2020-01-26 12:09:12 -07:00
Jon Trulson a5a5d83cbd dtprintinfo: fix a mulit-core build race, for realz this time 2019-11-22 17:35:29 -07:00
Jon Trulson 264871cefb Fix up a couple issues with multi-core builds and 2 race conditions 2019-11-22 13:42:02 -07:00
Jon Trulson 5bb7b74efd dtprintinfo: make it build
Also, it was easier just to use a single Makefile.am rather than one for
every subdir, so thats what we did here.
2019-11-21 17:51:35 -07:00
Jon Trulson 82059bf240 Merge branch 'master' into autotools-conversion after 2.3.1 release 2019-11-16 16:35:56 -07:00
Nina Didenko f75ee32e72 sym2num: don't hardcode path to cpp 2019-11-05 18:49:17 -07:00
Jon Trulson 730da7747c Change "if SUN" conditionals in remaining Makefile.am files to "if SOLARIS" 2019-10-28 18:54:17 -06:00
Chase e79d944119 programs/dtprintinfo: add automake files 2019-10-23 15:34:20 -06:00
Jose Rubio 08cea15be5 get rid of the 'extern sys_errlist' and 'sys_nerr' in SysErrorMsg. 2019-10-13 10:23:49 +02:00
Jose Rubio 0086a7067e Fix to compile warnings.
* discarded-qualifiers warnings.
* Function definitions, the .h doesn't match the .c.
* Added some include to ensure the .c has function definition.
2019-10-11 10:49:48 +02:00
Jon Trulson 05d231606e dtprintinfo: correct another possible buffer overflow 2019-05-07 11:21:49 -06:00
Jon Trulson 30cd56ac38 dtprintinfo: Fix a potential exploitable buffer overrun
This fixes a potentially exploitable buffer overrun in dtprintinfo.
This was brought to my attention based on a 0day exploit released for
Solaris CDE.

The exploit code does not work (or build) on linux, and the overrun is
in the heap rather than the stack as on Solaris, but it's easy to see
how this could be exploited.

The following is the content of the advisory:

8<-----------------------------------------------------------

@Mediaservice.net (Cybaze Group) Security Advisory #2019-01 (2019-05-07)

         Title:	Local privilege escalation via CDE dtprintinfo
   Application:	Common Desktop Environment 2.3.0 and earlier
     Platforms:	Oracle Solaris 10 1/13 (Update 11) and earlier
   Description:	A local attacker can gain root privileges by exploiting
		a buffer overflow in CDE dtprintinfo
        Author:	Marco Ivaldi <marco.ivaldi@mediaservice.net>
   Contributor:	Dave Aitel <dave.aitel@cyxtera.com> (original discovery)
 Vendor Status:	<secalert_us@oracle.com> notified on 2019-05-05
		<cdesktopenv-devel@lists.sourceforge.net> notified on 2019-05-05
           CVE:	The Common Vulnerabilities and Exposures project has not assigned
		a name to this issue yet
    References: https://lab.mediaservice.net/advisory/2019-01-cde-dtprintinfo.txt
		https://github.com/0xdea/raptor_infiltrate19
		https://sourceforge.net/p/cdesktopenv/wiki/Home/
		https://www.oracle.com/technetwork/server-storage/solaris10/
		https://www.mediaservice.net/
		https://infiltratecon.com/

1. Abstract.

A buffer overflow in the DtPrinterAction::PrintActionExists() function in the
Common Desktop Environment 2.3.0 and earlier, as used in Oracle Solaris 10 1/13
(Update 11) and earlier, allows local users to gain root privileges via a long
printer name passed to dtprintinfo by a malicious lpstat program.

This is a 0day vulnerability demonstrated at #INFILTRATE19 on May 2nd, 2019 in
the talk "A bug's life: story of a Solaris 0day".

2. Example Attack Session.

bash-3.2$ cat /etc/release
                    Oracle Solaris 10 1/13 s10x_u11wos_24a X86
  Copyright (c) 1983, 2013, Oracle and/or its affiliates. All rights reserved.
                            Assembled 17 January 2013
bash-3.2$ uname -a
SunOS nostalgia 5.10 Generic_147148-26 i86pc i386 i86pc
bash-3.2$ id
uid=54322(raptor) gid=1(other)
bash-3.2$ gcc raptor_dtprintname_intel.c -o raptor_dtprintname_intel -Wall
bash-3.2$ ./raptor_dtprintname_intel 192.168.1.1:0
raptor_dtprintname_intel.c - dtprintinfo 0day, Solaris/Intel
Copyright (c) 2004-2019 Marco Ivaldi <raptor@0xdeadbeef.info>

Using SI_PLATFORM       : i86pc (5.10)
Using stack base        : 0x8047fff
Using rwx_mem address   : 0xfeffa004
Using sc address        : 0x8047f60
Using strcpy() address  : 0xfefe26a0

lpstat called with -v
lpstat called with -v
lpstat called with -d
uid=0(root) gid=1(other)

3. Affected Platforms.

All platforms shipping the Common Desktop Environment are potentially
affected. This includes:

* Oracle Solaris 10 1/13 (Update 11) and earlier [default installation]

According to the CDE Wiki, the following platforms are officially supported:

* All Official Ubuntu variants 12.04 - 18.04
* Debian 6, 7, 8, 9
* Fedora 17 at least
* Archlinux
* Red Hat
* Slackware 14.0
* OpenBSD
* NetBSD
* FreeBSD 9.2, 10.x, 11.x
* openSUSE Tumbleweed (gcc7)
* openSUSE Leap 4.2 (gcc4)
* SUSE 12 SP3 (gcc4)
* Solaris, OpenIndiana

4. Fix.

The upstream CDE maintainers have issued a patch for this vulnerability. Oracle
is investigating the issue via tracking# S1153109 and is expected to release a
fix for all affected-supported versions of Solaris via their quarterly Critical
Patch Update (CPU) program.

As a temporary workaround, it is possible to remove the setuid bit from the
dtprintinfo executable as follows:

bash-3.2# chmod -s /usr/dt/bin/dtprintinfo

5. Proof of Concept.

A working exploit for Oracle Solaris 10 1/13 (Update 11) Intel has been
developed as a proof of concept. Exploits for other Solaris versions and for
the SPARC architecture are also available. All exploits can be downloaded at:

https://github.com/0xdea/raptor_infiltrate19/
https://github.com/0xdea/exploits/

8<-----------------------------------------------------------
2019-05-07 11:21:49 -06:00
Peter Howkins 40b38d300b dtprintinfo: Coverity 88447 2018-07-04 01:57:52 +01:00
Peter Howkins 09f187d6be dtprintinfo: Coverity 89669 2018-07-04 01:55:44 +01:00
Peter Howkins a38c049703 dtprintinfo: Coverity 88097 2018-07-04 01:53:56 +01:00
Peter Howkins 445019f086 dtprintinfo: Coverity 88683 2018-07-04 01:51:43 +01:00
Peter Howkins 1cd6ca0999 dtprintinfo: Coverity 88650 2018-07-04 01:49:50 +01:00
Peter Howkins c6dd25b884 dtprintinfo: Coverity 89488 2018-07-04 01:47:31 +01:00
Peter Howkins 419a7efff4 dtprintinfo: Coverity 89561 2018-07-04 01:45:39 +01:00
Peter Howkins ccd9f88a6d dtprintinfo: Coverity 88414 2018-07-04 01:43:29 +01:00
Jon Trulson 3096ad03a8 dtprintinfo: remove register keyword 2018-06-27 22:20:34 -06:00
chase 809c3d8bb6 Spelling fixes 2018-05-31 22:23:19 -06:00
Ulrich Wilkens 297b6bd845 Fix warnings on FreeBSD 2018-05-31 22:04:08 -06:00
chase 4f5e7fe5e3 Use POSIX macros for linux 2018-05-24 18:22:55 -06:00
chase 164e695cd0 remove OSF1 support 2018-05-24 14:25:26 -06:00
chase 0fa51f280f Use /var/spool instead of /usr/spool and /var/mail instead of /usr/mail 2018-05-20 12:30:32 -06:00
chase 07900bd93b Remove Unixware and openserver support 2018-05-20 12:13:07 -06:00
chase 8a4f389634 Remove UXPDS support 2018-05-15 20:27:22 -06:00
chase 1fe5a550b2 Fix typo in license headers 2018-04-28 12:30:20 -06:00
Swift Griggs 1fdcd4c93d Patches from pkgsrc-WIP 2016-08-05 11:21:06 -06:00
Peter Howkins 2ea057d511 Disable all code related to libXp
deprecated and mostly no longer included on current OSes
2016-04-20 20:17:22 +01:00