Add paranoid printing using strvisx.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@25332 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		@@ -32,6 +32,7 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "krb5_locl.h"
 | 
					#include "krb5_locl.h"
 | 
				
			||||||
 | 
					#include <vis.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct facility {
 | 
					struct facility {
 | 
				
			||||||
    int min;
 | 
					    int min;
 | 
				
			||||||
@@ -218,11 +219,21 @@ log_file(const char *timestr,
 | 
				
			|||||||
	 void *data)
 | 
						 void *data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    struct file_data *f = data;
 | 
					    struct file_data *f = data;
 | 
				
			||||||
 | 
					    char *msgclean;
 | 
				
			||||||
 | 
					    size_t len = strlen(msg) + 1;
 | 
				
			||||||
    if(f->keep_open == 0)
 | 
					    if(f->keep_open == 0)
 | 
				
			||||||
	f->fd = fopen(f->filename, f->mode);
 | 
						f->fd = fopen(f->filename, f->mode);
 | 
				
			||||||
    if(f->fd == NULL)
 | 
					    if(f->fd == NULL)
 | 
				
			||||||
	return;
 | 
						return;
 | 
				
			||||||
    fprintf(f->fd, "%s %s\n", timestr, msg);
 | 
					    /* make sure the log doesn't contain special chars */
 | 
				
			||||||
 | 
					    len *= 4;
 | 
				
			||||||
 | 
					    msgclean = malloc(len);
 | 
				
			||||||
 | 
					    if (msgclean == NULL)
 | 
				
			||||||
 | 
						goto out;
 | 
				
			||||||
 | 
					    strvisx(rk_UNCONST(msg), msgclean, len, VIS_OCTAL);
 | 
				
			||||||
 | 
					    fprintf(f->fd, "%s %s\n", timestr, msgclean);
 | 
				
			||||||
 | 
					    free(msgclean);
 | 
				
			||||||
 | 
					 out:
 | 
				
			||||||
    if(f->keep_open == 0) {
 | 
					    if(f->keep_open == 0) {
 | 
				
			||||||
	fclose(f->fd);
 | 
						fclose(f->fd);
 | 
				
			||||||
	f->fd = NULL;
 | 
						f->fd = NULL;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user