<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dwm.git, branch master</title>
<subtitle>My fork of dwm
</subtitle>
<id>https://git.marcelscrem.com/dwm.git/atom?h=master</id>
<link rel='self' href='https://git.marcelscrem.com/dwm.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.marcelscrem.com/dwm.git/'/>
<updated>2026-01-10T21:35:13Z</updated>
<entry>
<title>Merge branch 'master' of https://git.suckless.org/dwm</title>
<updated>2026-01-10T21:35:13Z</updated>
<author>
<name>Marcel Screm</name>
<email>marcel@marcelscrem.com</email>
</author>
<published>2026-01-10T21:35:13Z</published>
<link rel='alternate' type='text/html' href='https://git.marcelscrem.com/dwm.git/commit/?id=af31fc9683f28bfbaca539f87f43f253487a00ba'/>
<id>urn:sha1:af31fc9683f28bfbaca539f87f43f253487a00ba</id>
<content type='text'>
dwm 6.7
</content>
</entry>
<entry>
<title>bump version to 6.7</title>
<updated>2026-01-10T10:31:44Z</updated>
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<published>2026-01-10T10:31:44Z</published>
<link rel='alternate' type='text/html' href='https://git.marcelscrem.com/dwm.git/commit/?id=85fe518c1af5eb43f222f4d8579e4814ed769f3b'/>
<id>urn:sha1:85fe518c1af5eb43f222f4d8579e4814ed769f3b</id>
<content type='text'>
Put the maintainer at the top and bump years (time flies).
</content>
</entry>
<entry>
<title>dwm: Fix heap buffer overflow in getatomprop</title>
<updated>2026-01-10T10:27:23Z</updated>
<author>
<name>Chris Down</name>
<email>chris@chrisdown.name</email>
</author>
<published>2026-01-07T14:02:00Z</published>
<link rel='alternate' type='text/html' href='https://git.marcelscrem.com/dwm.git/commit/?id=244fa852fe2775cf52a3901966cd6d8700df8227'/>
<id>urn:sha1:244fa852fe2775cf52a3901966cd6d8700df8227</id>
<content type='text'>
When getatomprop() is called, it invokes XGetWindowProperty() to
retrieve an Atom. If the property exists but has zero elements (length
0), Xlib returns Success and sets p to a valid, non-NULL memory address
containing a single null byte.

However, dl (that is, the number of items) is 0. dwm blindly casts p to
Atom* and dereferences it. While Xlib guarantees that p is safe to read
as a string (that is, it is null-terminated), it does _not_ guarantee it
is safe to read as an Atom (an unsigned long).

The Atom type is a typedef for unsigned long. Reading an Atom (which
thus will either likely be 4 or 8 bytes) from a 1-byte allocated buffer
results in a heap buffer overflow. Since property content is user
controlled, this allows any client to trigger an out of bounds read
simply by setting a property with format 32 and length 0.

An example client which reliably crashes dwm under ASAN:

    #include &lt;X11/Xlib.h&gt;
    #include &lt;X11/Xatom.h&gt;
    #include &lt;stdio.h&gt;
    #include &lt;stdlib.h&gt;
    #include &lt;unistd.h&gt;

    int main(void) {
        Display *d;
        Window root, w;
        Atom net_wm_state;

        d = XOpenDisplay(NULL);
        if (!d) return 1;

        root = DefaultRootWindow(d);
        w = XCreateSimpleWindow(d, root, 10, 10, 200, 200, 1, 0, 0);
        net_wm_state = XInternAtom(d, "_NET_WM_STATE", False);
        if (net_wm_state == None) return 1;

        XChangeProperty(d, w, net_wm_state, XA_ATOM, 32,
                        PropModeReplace, NULL, 0);
        XMapWindow(d, w);
        XSync(d, False);
        sleep(1);

        XCloseDisplay(d);
        return 0;
    }

In order to avoid this, check that the number of items returned is
greater than zero before dereferencing the pointer.
</content>
</entry>
<entry>
<title>added xrdb patch for pywal</title>
<updated>2026-01-05T17:49:07Z</updated>
<author>
<name>Marcel Screm</name>
<email>marcel@marcelscrem.com</email>
</author>
<published>2026-01-05T17:49:07Z</published>
<link rel='alternate' type='text/html' href='https://git.marcelscrem.com/dwm.git/commit/?id=57d6a1e9a9b00d427e9c919d906f61352be22ee6'/>
<id>urn:sha1:57d6a1e9a9b00d427e9c919d906f61352be22ee6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>added urgent border patch</title>
<updated>2026-01-05T16:36:18Z</updated>
<author>
<name>Marcel Screm</name>
<email>marcel@marcelscrem.com</email>
</author>
<published>2026-01-05T16:36:18Z</published>
<link rel='alternate' type='text/html' href='https://git.marcelscrem.com/dwm.git/commit/?id=5d900a3458cc4051b1bb2168345ca3f3e2a718a9'/>
<id>urn:sha1:5d900a3458cc4051b1bb2168345ca3f3e2a718a9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>added scripts</title>
<updated>2026-01-05T14:35:06Z</updated>
<author>
<name>Marcel Screm</name>
<email>marcel@marcelscrem.com</email>
</author>
<published>2026-01-05T14:35:06Z</published>
<link rel='alternate' type='text/html' href='https://git.marcelscrem.com/dwm.git/commit/?id=bb6593783f652d8f9a4bd5c620b68a2f7b8da6c4'/>
<id>urn:sha1:bb6593783f652d8f9a4bd5c620b68a2f7b8da6c4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>changed readme</title>
<updated>2026-01-03T12:00:55Z</updated>
<author>
<name>Marcel Screm</name>
<email>marcel@marcelscrem.com</email>
</author>
<published>2026-01-03T12:00:55Z</published>
<link rel='alternate' type='text/html' href='https://git.marcelscrem.com/dwm.git/commit/?id=815dc9729f57701b1fe882a401cee3c9e7167d88'/>
<id>urn:sha1:815dc9729f57701b1fe882a401cee3c9e7167d88</id>
<content type='text'>
</content>
</entry>
<entry>
<title>nord theme</title>
<updated>2026-01-03T00:55:35Z</updated>
<author>
<name>Marcel Screm</name>
<email>marcel@marcelscrem.com</email>
</author>
<published>2026-01-03T00:55:35Z</published>
<link rel='alternate' type='text/html' href='https://git.marcelscrem.com/dwm.git/commit/?id=f8bc36b617b970e41dc2e55a9d85feb9f157a26b'/>
<id>urn:sha1:f8bc36b617b970e41dc2e55a9d85feb9f157a26b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>applied patches</title>
<updated>2025-12-04T13:23:10Z</updated>
<author>
<name>Marcel Screm</name>
<email>marcel@marcelscrem.com</email>
</author>
<published>2025-12-04T13:23:10Z</published>
<link rel='alternate' type='text/html' href='https://git.marcelscrem.com/dwm.git/commit/?id=b224668ef032f013cb4dc3831074f8dd553149bb'/>
<id>urn:sha1:b224668ef032f013cb4dc3831074f8dd553149bb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>drw.c: drw_scm_free: call free inside</title>
<updated>2025-09-29T16:48:27Z</updated>
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<published>2025-09-29T16:48:27Z</published>
<link rel='alternate' type='text/html' href='https://git.marcelscrem.com/dwm.git/commit/?id=7c3abae4e68b6a21f05cb04f3af31217259c0aa9'/>
<id>urn:sha1:7c3abae4e68b6a21f05cb04f3af31217259c0aa9</id>
<content type='text'>
Because drw_scm_create() allocates it.
</content>
</entry>
</feed>
