Commit Graph
100 Commits
Author SHA1 Message Date
Jon Trulson ab863f212d dtmail: fix extra format args warnings 2019-10-15 21:22:11 -06:00
Jon Trulson a38f72c0c8 dtmail: fix NULL char embedded in format string 2019-10-15 21:12:17 -06:00
Jon Trulson 7f414f5d35 dtpad: emit error on catopen() failure
This patch was manually added via a diff supplied from a user on the
CDE mailing list: Michele Ghisolfo <ghisolfo.m@gmail.com>
2019-10-14 14:42:21 -06:00
Jon Trulson 1972d3e378 dtfile: Add scroll wheel support
This patch was manually added via a diff supplied from a user on the
CDE mailing list: Michele Ghisolfo <ghisolfo.m@gmail.com>
2019-10-14 14:34:56 -06:00
Jon Trulson fd3cffcb37 dtcalc: increase highlight thickness to match Solaris CDE
This patch was manually added via a diff supplied from a user on the
CDE mailing list: Michele Ghisolfo <ghisolfo.m@gmail.com>
2019-10-14 14:30:58 -06:00
Jon Trulson ad94f2089d dtterm: add scroll wheel support
This patch was manually added via a diff supplied from a user on the
CDE mailing list: Michele Ghisolfo <ghisolfo.m@gmail.com>
2019-10-14 14:08:43 -06:00
Jon Trulson f2d52e35d6 linux: build all languages by default again
Someday we should be able to detect which languages are installed and
only build support for those.  Until then, build them all.
2019-10-13 22:24:38 -06:00
Jon Trulson 426a18d9ef isfname.c: remove register keyword 2019-09-11 17:48:06 -06:00
Jon Trulson b53728d3b3 ksh/libast: include sys/sysmacros.h in fmtdev.c for linux systems
Fix scraped from CDE forum post:
https://sourceforge.net/p/cdesktopenv/discussion/general/thread/24d7511a39/
2019-09-11 17:39:30 -06:00
Jon Trulson d59ec197e5 dtprintinfo: remove SUID root on install
This program should not be SUID root.  If you need it's services, just
run

sudo dtprintinfo -populate

TODO: dtprintinfo should only create it's actions (if ever) in a
user's .dt/types/ directory and not in any system-wide dirs.  No need
for root access at all.
2019-05-07 11:32:44 -06: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
Jon Trulson 5cdeaf5b1f NLS: fix quote issue with various OS's in C/types/_common.dt.tmsg 2019-02-24 12:58:31 -07:00
Jon Trulson d6ece8fd00 Merge branch 'master' of ssh://git.code.sf.net/p/cdesktopenv/code 2019-02-24 12:56:10 -07:00
Jon Trulson c575ca9315 dtdockbook/instant: Add the proper paths for TCL on NetBSD
Patch submitted by Danilo Pecher <danilo.pecher@data-experts.biz>
2019-02-24 12:54:42 -07:00
Jon Trulson 76721c2348 dtcalc/calctool.h: Use include stdlib rather than extern declarations 2018-11-08 14:19:25 -07:00
Jon Trulson 59dc231872 linux: DtHelp/StringFuncs, enable real iconv() support
For some reason, the #include of iconv.h was removed, and dummy stubs
were put in place on linux systems (only).  This caused iconv() calls
to be completely ignored.

Now we use iconv() just like very other OS we support.
2018-11-05 15:33:16 -07:00
Jon Trulson 2c1f56d37c Merge branch 'master' into cde-next 2018-11-04 10:56:04 -07:00
Jon Trulson 2fb1f12654 dtdocbook/instant: add Tcl_GetErrorLine check for older versions of Tcl 2018-10-07 13:28:04 -06:00
Jon Trulson 2dadc23e0e Merge branch 'master' into cde-next 2018-09-22 15:50:13 -06:00
Jon Trulson 77a027039c docbook.tcl, instant: finish remaining help generation issues with tcl
In this commit, we convert FreeBSD and OpenBSD to use a system version
of TCL (8.6).

We also get rid of the hairy and buggy "CompareI18NStrings" custom Tcl
function and use the newer Tcl's builtin dictionary sort mechanism for
generating the Indexes and Glossaries, which were silently broken in
previous commits.

It was just not possible to use the same Tcl code in modern versions
of Tcl in addition to the ancient version included with CDE - so, now
we will always depend on the system version.  It's been tested with
8.6 and 8.7 versions of Tcl with great results.
2018-09-22 12:27:27 -06:00
Jon Trulson 1fb82e3327 Remove ancient included tcl code 2018-09-22 12:27:09 -06:00
Jon Trulson 1c40db8eb0 dtdocbook/tcl/tcl.h: Add compatibility defines for old Tcl
dtdocbook/instant has been modified to use a more modern Tcl (8.6),
which means certain functions are not present when we are using the
dtdocbook/tcl (7.5) version of tcl instead of a modern system version.

So, create some defines that should work around this problem.
2018-09-20 16:50:28 -06:00
Jon Trulson 6a72e2cea8 Change version to 2.3.0a (devel) 2018-09-20 16:49:01 -06:00
Jon Trulson e82991579f use system tcl: clean up Imake files for dtdocbook/instant 2018-09-19 17:49:15 -06:00
Jon Trulson 23c4c0667d instant: encode 8bit chars to keep Tcl happy 2018-09-19 17:40:25 -06:00
Jon Trulson 7712950fb7 docbook/instant: fix a few more issues 2018-09-19 17:40:25 -06:00
Jon Trulson 776e031b60 docbook.tcl: fix up some problems using a modern Tcl
One issue that came up was attempting to read array values indexed by
a key that didn't exist when generating indexes and glossaries.

I am not sure why this hasn't been a problem before, but for now, we
simply won't try to emit array values for non-existant array indexes.
2018-09-19 17:40:25 -06:00
Jon Trulson 68559d4f76 tcl: use the system version, initial work only on linux for now 2018-09-19 17:40:25 -06:00
Jon Trulson 58af8b5c5e configShlibs.src: Fixup some bugs introduced by previous commits 2018-08-26 16:45:22 -06:00
Jon Trulson fa4d519aef sgmls: remove from repository - we always use nsgmls
This was part of Chase's sgml removal patch, but was not properly
merged by me, leaving the files intact.
2018-08-26 13:17:46 -06:00
Jon Trulson a29bd8937a dtfile: Fix up CopyCheckDeletePermission() and CheckDeletePermission
Remove calls to bogus utility functions in cases where the user is
root and the filesystem in question is an NFS filesystem.

For now, __linux___ and CSRG_BASED machines will use statfs to
determine whether to test delete-ability.  For other systems, just do
the create/delete test always if the user is root.
2018-08-25 17:38:48 -06:00
Jon Trulson f6d83dd5e3 Merge branch 'master' into cde-next 2018-08-01 19:18:17 -06:00
Jon Trulson ba611cbde6 templates/types.tmpl: make sure to clean up new .dt's on a make clean 2018-07-20 14:15:28 -06:00
Jon Trulson d557db4eb2 Rename "dtapp" to "dtopen"
A great suggestion by Matthew Trower.
2018-07-19 20:42:54 -06:00
Jon Trulson 2f6f1d2afb Finish integrating Antonis's desktop_approots work
In addition:

- moved video type detection into a separate file: videoTypes.dt out
  of datatypes.dt.  Also, removed all actions from Antonis' dt files,
  as these are handled by the new actions (listed below).

  Image, postscript, and PDF types definitions are still located in
  datatypes.dt.src

- supports most image files, PDFs, postscript files, and video files
  via dtapp now.

- Added new actions:

  - DisplayImage
  - DisplayVideo
  - DisplayPDF
  - DisplayPS

  All of these call the dtapp_* helpers to locate an appropriate
  program to handle the task.

- Added a camera icon

- standardized the icons used to display the various types - all
  images use the Dtimage icon now, as an example.

- moved the new *.dt files to their proper place in programs/types,
  rather than programs/localized/C/types (my bad).

Please add any further video types into videoTypes.dt, and everything
else (for now) into datatypes.dt.

In the future, we should probably separate these out into
type-specific .dt files.  Also, something should be done about playing
audio files too (maybe DisplayVideo.dt can handle all those too?)
2018-07-19 19:52:40 -06:00
Jon Trulson 2b41b84c33 Add actions and types from Antonis Tsolomitis' desktop_approots contribution 2018-07-19 18:58:17 -06:00
Jon Trulson d4450d7551 databases/: remove ancient crufty scripts 2018-07-19 18:58:17 -06:00
Jon Trulson cd38de99e4 Add icons from Antonis Tsolomitis desktop_approots contribution 2018-07-19 18:57:37 -06:00
Jon Trulson 5259022498 Add a new script, dtapp, used to locate and run various helper programs
This script is located in /usr/dt/bin/dtapp, and is then symlinked to
various helpers that can be used in DT actions to run programs.

The various helpers currently installed are:

dtapp_vimage - view an image file, override with DTAPP_VIMAGE.
Defaults to xv, display, and gimp, in that order.

dtapp_vpdf - view a PDF file, override with DTAPP_VPDF.  Defaults to
okular, xpdf

dtapp_vps - view a postscript file, override with DTAPP_VPS.  Defaults
to mgv, gv

dtapp_vvideo - view a video file, override with DTAPP_VVIDEO.
Defaults to vlc, ffplay.

When a request is made to view one of these files, the list of viewers
will be tried, in order, until one is found.  If none are found, an
error message will be displayed.  Add overrides to your ~/.dtprofile
file.

We can add more dtapp commands and defaults for them as needed.

This is in preparation for integrating Antonis Tsolomitis' extended
actions and icon files, coming up in future commits.
2018-07-19 18:57:20 -06:00
Jon Trulson 050fd75e80 lib/DtSearch/raima/proto.h: fix OBSD build - don't redef system functions
Remove redeclaration of system functions (strlen, free, open, etc).
Use the system header files.  That's what they are for.
2018-07-09 13:11:33 -06:00
Jon Trulson 3d8e76a69f Merge branch 'master' into cde-next
Need to resync before folding current cde-next into master.
2018-07-06 13:19:33 -06:00
Jon Trulson cf86199b19 Stable release: 2.3.0 2018-07-06 12:05:20 -06:00
Jon Trulson 87ad4219da Merge branch 'master' into update-with-master
Resync one last time with master for 2.3 release tomorrow.
2018-07-05 14:18:07 -06:00
Jon Trulson 16ee3d1be5 ttsnoop: resolve coverity 176047, 176046, 176044, 176043, 176042 and 176040 2018-07-05 13:42:36 -06:00
Jon Trulson a7ec1c6182 dwtm/WmResource.c: Stop printing garbage when XmeRenderTableGetDefaultFont() fails. 2018-07-02 14:44:58 -06:00
Jon Trulson dc7807b13b slib/mp_rpc_server: TIRPC: force a listen() call on the server socket
With earlier versions of RPC and TIRPC it seems that svctcp_create()
calles listen() on the socket (as seen by debugger and strace).
Tooltalk expects this behavior.

However, with newer systems (ArchLinux 5/18+ and similar bleeding edge
versions of SuSE's equivalent: Tumbleweed), this behavior seems to
have changed.

ttsession goes into an infinite loop trying to accept() a connection
in the TIRPC library (via svc_getreqset()).

It appears listen() is no longer called on the socket when it is
created via svctcp_create().  The hack in this commit, always causes
listen() to be called on the socket, and seems to resolve the problem.

But it is a hack I think.  I don't know if this is the correct
behavior of svctcp_create() or we were just lucky before.
2018-07-01 19:45:09 -06:00
Jon Trulson c0388656dc tt/mini_isam: add new isam_prototypes.h include file and fix up problems
There were a variety of potential 64b problems due to the complete
lack of prototype declarations.  So, we add a file, isam_prototypes.h,
generated mostly by the 'cproto' tool.

We also fixed up some errors that having proper prototypes pointed
out, mainly in passing ints where pointers were expected and vice
versa.  The iserase() function was supposed to accept a char *, but
was defined as only accepting a char.  Fun stuff like that.
2018-06-30 20:13:39 -06:00
Jon Trulson 0d39bd186f tt/mini_isam: remove all ancient sccsid blocks 2018-06-30 19:10:10 -06:00
Jon Trulson bc7e64195e tt/mini_isam: use proper include, get rid of ultrix strdup 2018-06-30 19:00:20 -06:00
Jon Trulson 392356f6b4 ttsnoop: use tail arg -f rather than +0f
I cannot even find out what "+0f" is supposed to do (google fail), but
this seems a reasonable alternative that should work everywhere.
2018-06-29 14:37:48 -06:00
Jon Trulson af6c2fd881 ttsnoop: drag into a modern C++ century
This program has never worked very well, and it may still not work
very well.  This commit removes the ancient C++ headers and uses
modern replacements with some changes required due to the different
interfaces.

It builds a lot cleaner, and no longer does stupid things like
deleteing char *, ostream.str()'s, and the like.

This program could be really useful if it worked well. Some thought
should be givien in the future to decouple this SW from dtappbuilder
and maybe just rewrite from scratch.
2018-06-29 13:48:06 -06:00
Jon Trulson a4a5413cd5 Merge branch 'master' into cde-next 2018-06-28 16:55:04 -06:00
Jon Trulson 94e69a00a7 dtdocbook/tcl/tclUtil.c: fix merge error 2018-06-27 22:48:30 -06:00
Jon Trulson 6b919c82d2 FreeBSD.cf, OpenBSD.cf: remove -Wno-deprecated-register, no longer needed 2018-06-27 22:30:28 -06:00
Jon Trulson d0dd809b74 lib/tt/mini_isam: remove register keyword 2018-06-27 22:26:18 -06:00
Jon Trulson 44f999c1de dtdocbook/regexp.c, remove register keyword 2018-06-27 22:23:40 -06:00
Jon Trulson e0036e6167 dtudcfonted, dtudcexch: delete from repository 2018-06-27 22:20:34 -06:00
Jon Trulson 53086aa9df util/dttypes: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson 1c822c2f0b nsgmls: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson 38d38987b0 localized/util: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson c1227cc629 dtwm: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson 2d7c1db6fc dtterm: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson 43cdfab6a1 dtstyle: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson d801b00866 dtsr: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson a66948f73e dtscreen: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson 3096ad03a8 dtprintinfo: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson f0a6172d3f dtpad: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson d0a4f777d8 dtmail: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson 88dd3b2c71 dtlogin: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson 97264ba971 dtksh: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson 556ce45298 dtinfo: remove register keyword 2018-06-27 22:20:34 -06:00
Jon Trulson 7c0de21ad4 dtinfo: remove TKTemplate.nd.c 2018-06-27 22:17:25 -06:00
Jon Trulson 424b662372 dtimsstart: remove register keyword 2018-06-27 22:17:25 -06:00
Jon Trulson ea2d3927c7 dtfile: remove register keyword 2018-06-27 22:14:51 -06:00
Jon Trulson 55a80f00cf dtdocbook: remove register keyword 2018-06-27 22:14:51 -06:00
Jon Trulson ca7d34b7ff dtcm: remove register keyword 2018-06-27 22:00:56 -06:00
Jon Trulson b7599ec2a2 dtcalc: remove register keyword 2018-06-27 22:00:56 -06:00
Jon Trulson f4776c21d7 dtappbuilder: remove register keyword 2018-06-27 22:00:56 -06:00
Jon Trulson 3e81f467be dtaction: remove register keyword 2018-06-27 22:00:56 -06:00
Jon Trulson b0fd79a680 tt/bin: remove register keyword 2018-06-27 22:00:56 -06:00
Jon Trulson 34436c7725 tt/lib: remove register keyword 2018-06-27 22:00:56 -06:00
Jon Trulson 904a48b822 lib/pam: remove register keyword 2018-06-27 21:59:18 -06:00
Jon Trulson d5eff36867 lib/pam/examples/login: remove register keyword 2018-06-27 21:59:18 -06:00
Jon Trulson 02c70c739d lib/csa: remove register keyword 2018-06-27 21:59:18 -06:00
Jon Trulson 3b1316112a DtWidget: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson b5a3c00671 DtTerm/util: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson 00aafb206e DtSvc/DtUtil2: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson f446ca54e9 DtSvc/DtUtil1: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson dbef83212a DtSvc/DtEncap: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson 11ad65226d DtSvc/DtCodelibs: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson 57ce407976 lib/DtSearch: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson 8e48100c12 DtSearch/raima: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson b9d605c8ea lib/DtPrint: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson 5b5ac72691 lib/DtHelp: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson 2760adaab3 lib/DtHelp/jpeg: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson e9d0d91cad lib/DtHelp/il: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson 7125b437f1 examples/dtwsm: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson b2a4d3c202 util/dbtoman/instant: remove register keyword 2018-06-27 21:58:04 -06:00
Jon Trulson 4aa9392e98 util/mkshadow: delete ancient unused utility 2018-06-27 21:58:04 -06:00