Version 2.16.
[pwmd.git] / NEWS
blob107f8ef1b88b695b1d12d7162b0c53381e11e2f4
1 PWMD v2.16
2 ----------
3 Portability fix for systems without SO_PEERCRED.
5 Use xmlSetProp() for settings attributes. May fix something, not sure.
7 Added an "_mtime" attribute which is updated each time an element is modified.
10 PWMD v2.15
11 ----------
12 Fixed the RC_ON_LOCKED and LOCK_ON_OPEN options when opening another file
13 using the same connection.
15 Fixed cleaning up the client when it disconnects while waiting for a file
16 mutex lock. This fixes sending the STATUS_CLIENTS message to other connected
17 clients rather than having to wait for the next client connect or disconnect.
20 PWMD v2.14
21 ----------
22 Security fix for the key_file configuration parameter. Previous versions used
23 fgets() to read up to one line of key data. The problem is that it stops
24 reading at a null byte or a newline character which will truncate your key
25 data at that byte position. This can be very bad if you think you have secure
26 randomly generated key data since those bytes can be anywhere in the key file.
28 The fix is to pay attention to the log message warning about truncated key
29 data and make note of the byte position. If you were to SAVE the associated
30 data file and haven't already truncated your key_file to the mentioned byte
31 position then the next OPEN will fail. You'll can truncate the actual key_file
32 by doing:
34         head -c BYTE_OFFSET < key_file > new_key_file
36 The BYTE_OFFSET is the truncated byte position mentioned in the log message.
37 Then move the new_key_file to replace the old key_file.
39 Or you can skip that step and do:
41         echo DUMP | pwmc datafile > raw_xml
43 Then do an pwmd XML import (--import) of raw_xml file using a newly generated
44 key_file (--key-file) which may now contain null bytes or newline characters
45 without any problems. The 'pwmc' command is included with libpwmd.
48 PWMD v2.13
49 ----------
50 Fixed a segfault in the MOVE command.
52 Fixed the MOVE command to allow overwriting the destination even if the
53 destination is a parent of the source.
55 Fixed a segfault in do_assuan_command() do to an invalid free().
57 Fixed commands returning GPG_ERR_ASS_WRITE_ERROR when no keepalive timeout was
58 specified (disabled). Don't create a timeout event. Also changed the timeout
59 event error code to return GPG_ERR_TIMEOUT.
61 The default iteration_progress has changed from 0 to 1000.
63 Fixed a segfault in the COPY command that would get triggered when copying a
64 tree previously copied and the destination was to a child of the copy.
66 Changed how the SAVE command handles a specified key when encryption
67 iterations is 0. Rather than keep the iterations at 0, reset it to the global
68 iterations settings or 1 if that setting is also 0. Since a key was specified
69 it is assumed that the file should be encrypted. This prevents misuse and
70 confusion.
73 PWMD v2.12
74 ----------
75 This version changes how the elements are accessed and breaks data file
76 compatibility with previous versions. Conversion is done automatically unless
77 you have elements in your data file name "element" or attributes named "_name".
78 The reason for the change is that the XML parser doesn't like commonly used
79 characters in element names (for example, an email address or digit as the
80 first character). So the solution is to use an attribute to store the name of
81 the element and let the actual element be generic. All elements in your data
82 file will be renamed to "element" with an attribute "_name" being the original
83 element name. Be sure to make a backup copy of your data file. I hope you find
84 the change worth it.
86 Fixed creating element paths that had children of the same name as the parent.
88 Added the MOVE command. This will move an element path to another location in
89 the document. Faster than a COPY/DELETE.
91 Added client option RC_ON_LOCKED. If set, rather than sending a status message
92 when the file mutex is locked, an error code will be sent instead; stopping
93 the command.
96 PWMD v2.11
97 ----------
98 Another fix for the COPY command. This one fixes copy siblings of the source
99 element and also fixes references to a free'd pointer.
102 PWMD v2.10
103 ----------
104 Added command XPATHATTR. This will operate on attributes of the expression
105 nodeset.
107 XPATH now return GPG_ERR_ELEMENT_NOT_FOUND when the expression doens't match
108 any elements. It used to return GPG_ERR_NO_VALUE.
110 ATTR SET no longer requires a value.
112 GPG_ERR_NO_VALUE is returned from ATTR GET for attributes without a value.
115 PWMD v2.9
116 ----------
117 Don't require libassuan 2.0 anymore. Use the static library included in the
118 archive like was done before pwmd 2.2. This is needed for use with libpwmd
119 and fixes a bug with libgpg-error return codes.
121 Fixed another stupid bug with the RENAME command.
123 Added SET option LOCK_ON_OPEN to lock the file mutex after a successful OPEN
124 as if the LOCK command had been sent.
126 Added the LS protocol command to list files in data_directory.
129 PWMD v2.8
130 ----------
131 Fixed the RENAME command to handle target attributes and ambiguities.
133 Unicode fixes.
135 Fixed validating element names.
138 PWMD v2.7
139 ----------
140 Fixed the COPY command to handle root elements and to copy attributes too.
142 Fixed the RENAME command to overwrite an existing element tree of the same
143 value.
145 Since Valgrind and dmalloc don't like PTH threads --enable-debug now prints
146 out a backtrace of each allocation so finding memory leaks is easier/possible.
147 The output of xdump() shows non-freed pointers which can be found in the
148 backtrace output then processed through addr2line to find where it occured.
150 Fixed a few memory leaks.
152 Fixed handling of SIGABRT.
155 PWMD v2.6
156 ----------
157 Fixed a nasty bug that may have existed in all previous versions that would
158 cause a segfault do to an invalid return value from pth_exit().
160 The default keepalive is now 0 or disabled. It was added during testing of
161 remote connections over TLS and kept for use with libpwmd and SSH connections.
162 The development version of libssh2 has connection timeout support so there
163 really isn't any reason for doing keepalives in pwmd. This also fixes longer
164 running processes linked with libpwmd that keep a connection open but do not
165 parse status messages. pwmd would therefore kill the connection.
168 PWMD v2.5
169 ----------
170 New configuration parameter "allowed" to specify which users are allowed to
171 connect to the unix domain socket. The default is the invoking user only.
173 Fixed the IMPORT command to let it handle "target" attributes properly.
175 Let "disable_list_and_dump" be resetable during SIGHUP but only if not
176 permissive (TRUE).
179 PWMD v2.4
180 ----------
181 Reworked the IMPORT command to let it create root elements. The syntax has
182 changed to have the content as the first argument and the element path, if
183 any, as the remaining arguments after the content which is now TAB, rather
184 than space, separated.
186 Changed how the "target" attribute value is stored in the document.  Rather
187 than storing the resolved destination argument, first check to see if the
188 element path (which may contain other target attributes) is valid then store
189 the specified path as the "target" attribute value.
191 A few bugfixes. See ChangeLog for details.
194 PWMD v2.3
195 ----------
196 The DISPLAY and TERM environment variables are unset just before entering the
197 server loop. Clients wanting to use pinentry must set these options manually
198 or configure ~/.pwmd/pinentry.conf. This fixes pwmd using these variables
199 which may no longer be valid.
201 Ported to libassuan 2.0. There is no longer a static libassuan included in the
202 archive since this version supports building a DSO.
204 Fixed the COPY command copying only the the first element of the tree. How'd
205 that happen?
208 PWMD v2.2
209 ----------
210 Bugfix for pushing non-encrypted files into the cache.
213 PWMD v2.1
214 ----------
215 A new GnuPG key is being used to sign releases and git tags. The new key-id is
216 0xB140DCE2. The old key-id 0xF2B33BEF should be considered revoked do to a
217 data loss (not pwmd's fault, though).
219 Added an "age" attribute to the document element. This attribute is updated to
220 the time of the last SAVE.
222 Added support for using different ciphers when saving a data file. This adds a
223 new configuration parameter "cipher" and also adds a new option "SET CIPHER".
224 See the manual page for supported ciphers.
226 Added a new configuration parameter "log_level".
228 Added the RENAME command to rename an element.
230 Added the COPY command to copy an element tree to an element path.
232 Always use the passphrase specified with the OPEN command, if any, even when
233 the (encrypted) file has been cached.
235 Fixed converting an unencrypted data file.
237 A few portability fixes for 64-bit machines.
239 Added configuration parameter "debug_file" to log all protocol IO to the
240 specified file.
243 PWMD v2.0
244 ----------
245 This version breaks data file compatibility with previous versions but has an
246 option to convert your existing data file to the new format. See the manual
247 page about the --convert command line switch. Future versions that have data
248 file changes shouldn't have this problem.
250 Requires a C99 compiler.
252 libassuan is included statically. There is no longer an external dependency.
254 Better handling of unexpected client disconnects and status messages.
256 Added new protocol command VERSION.
258 Added new protocol commands SET and UNSET. SET replaces the old OPTION
259 command. UNSET resets an option to its default value.
261 Pinentry is used when importing, converting and pushing files from the command
262 line. It can also be disabled to use regular terminal input.
264 The file cache is a GSList rather than a mmap()'ed page of memory. This allows
265 for an unlimited number of data files but changes the CACHE status message to
266 only show the number of cached files and not any total.
268 Removed EPWMD_MAX_SLOTS, EPWMD_ERROR and EPWMD_ELOOP.
270 Added new XFER status message. This is sent after every ASSUAN_LINELENGTH
271 bytes when tranferring data lines. This adds a new configurations parameter
272 "xfer_progress".
274 Option ACL (Access Control List) support. When --enable-acl is passed to
275 configure, data files with an ACL will be retained after a SAVE or inherited
276 from the data_directory if new.
278 The ISCACHED command now checks for file existance. Returns GPG_ERR_NOT_FOUND
279 if it exists but not found in the file cache or an errno from access(2).
281 Renamed a few SET (old OPTION command) parameters to match the rcfile
282 parameter names so GETCONFIG will work better:
283         PINENTRY -> ENABLE_PINENTRY
284         TIMEOUT  -> PINENTRY_TIMEOUT
285         PATH     -> PINENTRY_PATH
287 Removed the old CLIENT option. The old NAME sub-option can be set with SET
288 NAME=VALUE.
290 Changed how GETCONFIG handles per-session option changes for some options. If
291 no file is specified and the specified option was previouly SET, then the SET
292 value is returned. Else the option for the specified file is read from the
293 configuration file.
295 GETCONFIG <filename> ITERATIONS will read the file header of the specified
296 file. Useful if using a local pinentry and you need to determine if a filename
297 is encrypted or not.
299 SET ITERATIONS requires an open file.
301 The configuration parameters "pinentry_timeout" and "enable_pinentry" can now
302 be set per-file in the configuration file.
304 Can now use both short and long command line options.
306 The CACHETIMEOUT command has had its arguments flipped to keep consistancy
307 with other commands: CACHETIMEOUT <filename> <seconds>