Download Latest Version netatalk-4.2.4.tar.xz (935.2 kB)
Email in envelope

Get an email when there's a new version of netatalk

Home / netatalk-4-2-0
Name Modified Size InfoDownloads / Week
Parent folder
netatalk-4.2.0.wbm.gz 2025-03-31 50.9 kB
netatalk-4.2.0.tar.xz.sha256sum 2025-03-31 88 Bytes
netatalk-4.2.0.tar.xz 2025-03-31 934.0 kB
Netatalk 4.2.0 source code.tar.gz 2025-03-31 1.4 MB
Netatalk 4.2.0 source code.zip 2025-03-31 1.8 MB
README.md 2025-03-31 20.0 kB
Totals: 6 Items   4.2 MB 0

Netatalk 4.2.0 is available!

The Netatalk team is proud to announce the first version in the Netatalk 4.2 release series. This release is recommended for early adopters. We made range of breaking changes under the hood, so please take a backup of your shared volumes before proceeding with an upgrade!

Security and Reliability

Netatalk 4.2 is more resilient against buffer overflows, undefined behavior, memory leaks, etc.

We are now more aggressively controlling and validating the size of buffers, check for NULL pointers, free dynamically allocated memory, initialize variables before use, control filesystem access with file handlers to avoid race conditions, and so on.

For the first time ever, we pass our own Quality Gate on SonarQube.

While we haven't seen any side effects in our testing, there is a small chance that edge cases are seeing different behavior now, for instance due to C strings being truncated instead of allowed to overflow. If you find new bugs, please report them to us!

iniparser

Netatalk 4.2 is now depending on the iniparser shared library on your system. We have dropped our own bundled fork (hacked version) of iniparser.

As a result, iniparser is now a hard dependency for Netatalk. Among our officially supported operating systems, only Oracle Solaris is lacking a packaged iniparser library. On Solaris, you can build your own shared library from upstream tarball. The iniparser library is written in pure C and has no dependencies, so it's trivial to build.

Since we had several local hacks to iniparser, this leads to a handful of changed behaviors. The most notable are:

  • So far, Netatalk has relied on ini section names for volume names. However, upstream iniparser treats section names as case insensitive, and will force them to lowercase internally. Hence, you will see that by default, your volumes are now named in all lowercase. For instance, if your volume section is defined as [My AFP Volume] it will be mounted as my afp volume on a Mac.
  • To get around the above, we have introduced a volume name afp.conf volume section option to customize case insensitive names for your volumes. For the above example, you could do:

    [my volume] volume name = My AFP Volume path = /path/to/volume

Now the section name between the brackets is simply an internal identifier, and can be set to anything as long as it is a unique section name in afp.conf.

  • We no longer support the include directive in afp.conf. This was used to dynamically load secondary ini files from within afp.conf. If there is enough demand, we can consider introducing equivalent functionality in the future.

Markdown docs

All XML documentation has been converted to Markdown. We now depend on the light-weight cmark or cmark-gfm to transcode Markdown to roff man pages or html pages for publishing on the website.

This removes Netatalk's dependency on DocBook XSL and the XML stack to build documentation.

Introduces with-docs, with-docs-l10n, and with-website Meson options.

Removes with-manual, with-manual-l10n, and with-readme Meson options.

In most cases you don't have to touch these options. Use with-docs if you want to suppress certain types of documentation. For instance, if you want to build the roff man pages, and not the html or readme docs, do:

-Dwith-docs=man

Or if you want no docs whatsoever:

-Dwith-docs=

Changes to afp.conf settings

A handful of afp.conf settings have been added, removed, or changed.

  • appledouble has been removed – the filesystem metadata settings are now controlled solely by the ea option
  • server name has been added – enables the AFP server name to be set independently of hostname
  • zeroconf name has been removed – folded into server name
  • volume name has been added – used for setting case sensitive volume names; see iniparser section above
  • fce ignore names has been modified – now takes a comma delineated list rather than forward slash delineated

Changes to Meson build system options

Overall, the Meson build system has been cleaned up to remove autoconf-isms and obsolete flags.

  • -Dwith-shadow has been removed – we always use shadow passwords now when shadow.h is detected
  • -Dwith-unicode-data has been added – we no longer generate new Unicode lookup tables by default; enable with this option

pap CUPS backend

We now bundle a modified version of Thomas Kaiser's pap backend for CUPS. It will be installed next to the other CUPS backends on your system. It enables printing from modern computers to f.e. a LocalTalk networked Apple LaserWriter.

Edit the backend (which is shell script) to configure other printer models.

Please note that the upcoming CUPS v3 is expected to do away with custom backends. CUPS v2 is recommended.

Secure tmp file handling

Temporary file handling has been standardized and made more secure. Rather than hard coding to /tmp, we are now sensitive to the standard TMPDIR env variable. Also, temporary files will be put under unique named subdirs (netatalk-[pid]) to the tmp folder.

Docker container

Several new features have been added to the Docker container.

  • DROPBOX – enables guest access with read/write access to the secondary shared volume. Warning: This is highly insecure. Use only on trusted networks.
  • AFP_MIMIC_MODEL – define the AFP volume icon used by macOS
  • AFP_LEGACY_ICON – define the AFP volume icon used by Classic Mac OS

Additionally, the entrypoint script has been converted to POSIX shell, removing the dependency on bash.

What's Changed

New Contributors

Full Changelog: https://github.com/Netatalk/netatalk/compare/netatalk-4-1-1...netatalk-4-2-0

Source: README.md, updated 2025-03-31