[nas] NAS 1.9 (stable) is available
jon at radscan.com
Sat Apr 7 17:49:36 MDT 2007
at the usual places: http://radscan.com/nas.html
The only changes in this release compared to the last devel release
(1.8b) is the change of the release number of course, and new html
versions of the man pages that reflect current reality.
Thanks to all those who contributed to this release!
Here is the HISTORY for v1.9:
Version 1.9 (stable) 04/07/2007
- stable 1.9 release. No code changes (other than RELEASE) since
1.8b devel release.
- In short: Fixes to several DOS attacks that could be carried out
aginst a nasd server, ANSI'fication of most of the server and
client code, and significant rework of input and output mixer
handling in the voxware (OSS) server.
Read below for more detail on the changes since the last stable
Version 1.8b (devel) 03/25/2007
- 1.8b devel release. Final 1.9 in about 2 weeks, barring any
- fix a variety of problems that could result in a denial of
service by crashing the nasd server. These attacks were
researched by Luigi Auriemma, who also provided a description of
the attacks and an exploit program, 'nasbugs'.
I have added his emailed report and the test attack code to the
nas repository in contrib/nasbugs if you are interested. Thanks
to Luigi for finding these problems. It sucked fixing them :)
Here is a list of the bugs tested as output by the nasbugs
1 = accept_att_local buffer overflow through USL connection
2 = server termination through unexistent ID in AddResource
3 = bcopy crash caused by integer overflow in ProcAuWriteElement
4 = invalid memory pointer caused by big num_actions in ProcAuSetElements
5 = another invalid memory pointer caused by big num_actions in
6 = invalid memory pointer in compileInputs
7 = exploits bug 3 in read mode (requires something playing on
8 = NULL pointer caused by too much connections
Note on bug #2, X11 display servers should be vulnerable to a
DOS of this type as well (causing fatal 'client not in use'
errors in AddResource()).
Note on bug #8, the nasd server will not be able to accept
further client connections when the client table is full, until
the rejected clients disconnect their end of the socket and the
neccessary fd's are freed up. It's better than coring though.
- set the default open modes for the output audio device to
write-only, and for the input device, use read-only (already the
These can still be changed in the nasd.conf file, if needed.
Previously, the default was to open the output device
read-write, causing various issues with different
hardware/driver configurations. There is no need to open this
device read-write anyway.
- apply patch from Paul Fox, correcting a typo in auvoxware.c
- apply patch from Erik Auerswald
"With the attached patch the output and input device can be
disabled by specifying an empty string as device name. Yes, when
using an empty string for both devices there will be a NAS
server that can neither play nor record anything."
Version 1.8a (devel) 11/27/2006
- Updated the Amd.h (machine definition file) with modern X11
(X11R6.8) contents so it can build with Qt and other X11
software that makes use of X11's Xmd.h header file. Problem
reported by Bernard Leak.
- ANSI'fication of DeleteTypes (dia/resource.c) and NoopDDA.
Add proper header #includes where needed.
- patch from Petr Salinge (via Steve McIntyre) adding GNU/kFreeBSD
- Patches from Paul Fox:
- allow the specification of a scaling factor to apply to the
- add a proper return value in auvoxware.c:initMixer()
- mondo indentification of server/*
- Applied patches from Stefan Huehner:
- marks some read-only string and function parameters as 'const
char*' instead of 'char *'. In addition an unused buffer
'errfile' from aulog.c was removed. As the two release.h
files are generated the NetAudio.tmpl was modified to emit the
'const char *' declaration.
- part two of the _.*Const removal patch. Some more defines of
_.*Const were removed which have been missed by the last patch
and the interval usage of _.*Const has been simplified to just
- removes more unused defines and functions in server/ .
Additionally a k&r style function was convertd to ansi c in
- converts more function declarations and their prototypes
without parameters from () to the (void) form
- attached patch changes all of the conditional i.e. _AuConst
definitions to only list const in the externally visible
header files. This is to preserve compatibility if someone
uses these definitions while using the libaudio library.
[JET] The use of AuConst is deprecated (and is probably not
being used by anyone anyway).
- removes the defined VENDOR_STRING and VENDOR_RELEASE from
server/include/site.h as they aren't used in the 3 files
including site.h. Additionally the inclusions of site.h was
removed from server/dia/main.c as none of its defines is used
- removes the 2 unused functions:
- server/dia/dispatch.c: void UpdateCurrentTime()
- server/dia/dixutils.c: TimeStamp ClientTimeToServerTime
and it changes one more occurence of () to (void).
- corrects some function declarations by changing () to (void)
- removes some unsued variables in lib/audio/nameaddr.c and
and unused function in server/os/utils.c
- removed some old (and stupid) debug code for AIX: in
server/os/utils.c there is some code to redirect error logging
from stderr to and file in tmp on AIXV3. As OpenDebug isn't
called anywhere this is broken when AIXV3 is
defined. Additionally this logfile is fixed in /tmp which
- removed the declaration of FreeResource from the opaque.h
header file. All files which include opaque.h don't use this
function and this declaration is copied from resource.h
- corrects several prototypes in resource.[ch] to match the
actual function definitions inside resource.c
- patch that modifies the two users of ostruct.h to directly
include os.h (which includes misc.h) and removes the
osstruct.h line in config/filelist. If an additional "svn
remove server/include/osstruct.h" is used we can get rid of
- removes servermd.h. removes the inclusion of servermd.h in 3
files and its reference in 'config/filelist'.
- clean up several of the client programs. Mostly adding const
to parameter/variable declarations. Additionally an unsused
variable was removed and some prototype in audemo.c were
- remove some unused variables
- remove server/include/miscstruct.h
- various include file cleanups - removing unused
variables/structures, etc left over from X11.
- removing old 'const' determination, correcting some proper
uses of const. 'const' is expected to be supported by your
- ANSIfication of various NAS components.
- remove unused portion of X11 server components (fonts, GC's,
- applied patches from Erik Auerswald:
- Add patch adding a proper 'reset' action to contrib/rc/nasd.
- a patch that:
Adds support for a different mixer for the input device to the
voxware server. Without this patch the mixer device specified
in the input section of the config file is not used.
To use the same mixer for input and output just specify the
same device in the input- and output-section of the config
file. The empty string "" can be used to specify no mixer
device for the input- or output-section. This is documented
in the nasd.conf man page.
The outputsection keyword is added to the nasd.conf man page.
fixed a bug in the support of two devices: If two devices are
used, and the sample rate of the input device can be changed,
the wrong sample size would be set by openDevice().
remove the unused "stereodevs" variable.
NOTE: Prior to this patch, the mixer device parameter for the
input section was completely ignored. The default value
for this ignored parameter was "/dev/mixer1".
With this patch, this parameter is honored. If your
configuration depends on the input mixer being the same
as the output mixer, you will need to edit your
/etc/nas/nasd.conf and set the mixer parameter in the
inputsection to '/dev/mixer', or to whatever mixer
device your outputsection is using.
If your system contains a /dev/mixer1 device (the
default input mixer device), nasd will now use it. This
is a good thing. :)
- preserve configuration of input device in the voxware server
when ReleaseDevice is on, and no flow is active.
- document nasd '-V' option in the man page
- opening the mixer device should be allowed to fail according
to http://radscan.com/nas/nas-ml/msg01121.html. But right now
it may only fail on startup, not when re-opening the audio
device. The attached patch corrects this issue.
- adding an option to aupanel to specify the initially
- keeping gain and input mode changes consistent between voxware
server and mixer if possible.
- changing recording level controls of the voxware server to use
IGain or RecLev when available and select only the specified
- fixing MixerInit option of the voxware server.
- Adding a KeepMixer option (on by default) that causes NAS to
always keep the mixer device open so it can track external
changes to mixer settings.
- patch adding ReInitMixer option that init's the mixer to
defaults every time nasd re-opens the audio device.
- patches ANSI'fying the nas clients
- extending the gainScale functionality to apply to the input
gain as well.
mailto:jon at radscan.com
"No Kill I" -Horta
More information about the Nas