--- icebreaker-1.21.orig/options.c
+++ icebreaker-1.21/options.c
@@ -25,6 +25,8 @@
 #include <stdio.h>
 #include <string.h>
 #include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
 #include "icebreaker.h"
 #include "globals.h"
 #include "icebreaker.h"
@@ -51,11 +53,14 @@
 	char optbuf[20];
 	char valbuf[10];
 	int i;
+	uid_t gid=getegid(), uid=geteuid();
 
 	setdefaultoptions();
 	
 	snprintf(filename,255,"%s/%s",homedir,OPTIONFILE);
 	
+	seteuid(getuid());
+	setegid(getgid());
 	optionfile=fopen(filename,"r");
 	if (optionfile==NULL)
 	{
@@ -110,6 +115,8 @@
 	}
 	
 	fclose(optionfile);
+	setegid(gid);
+	seteuid(uid);
 
 	return false;
 }
@@ -118,8 +125,12 @@
 {
 	FILE * optionfile;
 	char filename[255];
+	uid_t gid=getegid(), uid=geteuid();
+	
 	snprintf(filename,255,"%s/%s",homedir,OPTIONFILE);
 	
+	seteuid(getuid());
+	setegid(getgid());
 	optionfile=fopen(filename,"w");
 	if (optionfile==NULL)
 	{
@@ -168,6 +179,8 @@
 
 	
 	fclose(optionfile);
+	setegid(gid);
+	seteuid(uid);
 	
 	return false;
 }
