Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
obliterate CFWORKDIR (GLOBAL_C) and its usage in the main codebase.
- CFWORKDIR globals remain in tests/{unit,load}/ but are unrelated
  to the main global that is being obliterated here.
  • Loading branch information
cdituri authored and kacf committed Mar 30, 2015
1 parent 0f96c07 commit dcc09de
Show file tree
Hide file tree
Showing 18 changed files with 67 additions and 43 deletions.
4 changes: 4 additions & 0 deletions .gitignore
@@ -1,3 +1,7 @@
# git mergetool leftovers

*.[ch].orig

# intermediate / autogen

*.la
Expand Down
1 change: 0 additions & 1 deletion cf-agent/cf-agent.c
Expand Up @@ -455,7 +455,6 @@ static GenericAgentConfig *CheckOpts(int argc, char **argv)
const char *inputdir = GetInputDir();
const char *logdir = GetLogDir();
const char *statedir = GetStateDir();
strcpy(CFWORKDIR, workdir);
Writer *out = FileWriter(stdout);
WriterWriteF(out, "self-diagnostics for agent using workdir '%s'\n", workdir);
WriterWriteF(out, "self-diagnostics for agent using inputdir '%s'\n", inputdir);
Expand Down
3 changes: 2 additions & 1 deletion cf-execd/cf-execd.c
Expand Up @@ -418,7 +418,8 @@ static bool LocalExecInThread(const ExecConfig *config)
static void Apoptosis(void)
{
char promiser_buf[CF_SMALLBUF];
snprintf(promiser_buf, sizeof(promiser_buf), "%s/bin/cf-execd", CFWORKDIR);
snprintf(promiser_buf, sizeof(promiser_buf), "%s%cbin%ccf-execd",
GetWorkDir(), FILE_SEPARATOR, FILE_SEPARATOR);

if (LoadProcessTable(&PROCESSTABLE))
{
Expand Down
7 changes: 5 additions & 2 deletions cf-key/cf-key-functions.c
Expand Up @@ -39,6 +39,7 @@
#include <eval_context.h>
#include <crypto.h>
#include <file_lib.h>
#include <known_dirs.h>


static const char *const passphrase = "Cfengine passphrase";
Expand Down Expand Up @@ -124,7 +125,9 @@ int TrustKey(const char* pubkey)
if (NULL == digeststr)
return 1; /* ERROR exitcode */

snprintf(outfilename, CF_BUFSIZE, "%s/ppkeys/root-%s.pub", CFWORKDIR, digeststr);
snprintf(outfilename, CF_BUFSIZE, "%s%cppkeys%croot-%s.pub",
GetWorkDir(), FILE_SEPARATOR, FILE_SEPARATOR, digeststr);

free(digeststr);

ok = CopyRegularFileDisk(pubkey, outfilename);
Expand Down Expand Up @@ -313,7 +316,7 @@ void KeepKeyPromises(const char *public_key_file, const char *private_key_file)

fclose(fp);

snprintf(vbuff, CF_BUFSIZE, "%s/randseed", CFWORKDIR);
snprintf(vbuff, CF_BUFSIZE, "%s%crandseed", GetWorkDir(), FILE_SEPARATOR);
if (RAND_write_file(vbuff) != 1024)
{
Log(LOG_LEVEL_ERR, "Unable to write randseed");
Expand Down
3 changes: 2 additions & 1 deletion cf-runagent/cf-runagent.c
Expand Up @@ -746,7 +746,8 @@ static FILE *NewStream(char *name)
}
else
{
snprintf(filename, CF_BUFSIZE, "%s/outputs/%s_runagent.out", CFWORKDIR, name);
snprintf(filename, CF_BUFSIZE, "%s%coutputs%c%s_runagent.out",
GetWorkDir(), FILE_SEPARATOR, FILE_SEPARATOR, name);
}

if (OUTPUT_TO_FILE)
Expand Down
2 changes: 1 addition & 1 deletion cf-serverd/cf-serverd-functions.c
Expand Up @@ -301,7 +301,7 @@ static void KeepHardClasses(EvalContext *ctx)
char name[CF_BUFSIZE];
if (name != NULL)
{
char *existing_policy_server = ReadPolicyServerFile(CFWORKDIR);
char *existing_policy_server = ReadPolicyServerFile(GetWorkDir());
if (existing_policy_server)
{
free(existing_policy_server);
Expand Down
1 change: 1 addition & 0 deletions libcfnet/tls_client.c
Expand Up @@ -37,6 +37,7 @@
#include <net.h> /* SendTransaction, ReceiveTransaction */
/* TODO move crypto.h to libutils */
#include <crypto.h> /* LoadSecretKeys */
#include <bootstrap.h> /* ReadPolicyServerFile */


extern RSA *PRIVKEY, *PUBKEY;
Expand Down
24 changes: 15 additions & 9 deletions libenv/sysinfo.c
Expand Up @@ -378,6 +378,8 @@ void DiscoverVersion(EvalContext *ctx)
int major = 0;
int minor = 0;
int patch = 0;
const char* const workdir = GetWorkDir();

if (3 == sscanf(Version(), "%d.%d.%d", &major, &minor, &patch))
{
char workbuf[CF_BUFSIZE];
Expand All @@ -389,7 +391,10 @@ void DiscoverVersion(EvalContext *ctx)
snprintf(workbuf, CF_MAXVARSIZE, "%d", patch);
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "cf_version_patch", workbuf, CF_DATA_TYPE_STRING, "source=agent");

snprintf(workbuf, CF_BUFSIZE, "%s%cinputs%clib%c%d.%d", CFWORKDIR, FILE_SEPARATOR, FILE_SEPARATOR, FILE_SEPARATOR, major, minor);
snprintf(workbuf, CF_BUFSIZE, "%s%cinputs%clib%c%d.%d",
workdir, FILE_SEPARATOR, FILE_SEPARATOR,
FILE_SEPARATOR, major, minor);

EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "libdir", workbuf, CF_DATA_TYPE_STRING, "source=agent");

snprintf(workbuf, CF_BUFSIZE, "lib%c%d.%d", FILE_SEPARATOR, major, minor);
Expand All @@ -400,7 +405,7 @@ void DiscoverVersion(EvalContext *ctx)
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "cf_version_major", "BAD VERSION " VERSION, CF_DATA_TYPE_STRING, "source=agent");
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "cf_version_minor", "BAD VERSION " VERSION, CF_DATA_TYPE_STRING, "source=agent");
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "cf_version_patch", "BAD VERSION " VERSION, CF_DATA_TYPE_STRING, "source=agent");
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "libdir", CFWORKDIR, CF_DATA_TYPE_STRING, "source=agent");
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "libdir", workdir, CF_DATA_TYPE_STRING, "source=agent");
}
}

Expand All @@ -412,6 +417,7 @@ static void GetNameInfo3(EvalContext *ctx)
struct hostent *hp;
struct sockaddr_in cin;
unsigned char digest[EVP_MAX_MD_SIZE + 1];
const char* const workdir = GetWorkDir();

#ifdef _AIX
char real_version[_SYS_NMLN];
Expand Down Expand Up @@ -564,7 +570,7 @@ static void GetNameInfo3(EvalContext *ctx)
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "release", VSYSNAME.release, CF_DATA_TYPE_STRING, "inventory,source=agent,attribute_name=OS kernel");
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "version", VSYSNAME.version, CF_DATA_TYPE_STRING, "source=agent");
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "arch", VSYSNAME.machine, CF_DATA_TYPE_STRING, "inventory,source=agent,attribute_name=Architecture");
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "workdir", CFWORKDIR, CF_DATA_TYPE_STRING, "source=agent");
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "workdir", workdir, CF_DATA_TYPE_STRING, "source=agent");
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "fstab", VFSTAB[VSYSTEMHARDCLASS], CF_DATA_TYPE_STRING, "source=agent");
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "resolv", VRESOLVCONF[VSYSTEMHARDCLASS], CF_DATA_TYPE_STRING, "source=agent");
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "maildir", VMAILDIR[VSYSTEMHARDCLASS], CF_DATA_TYPE_STRING, "source=agent");
Expand All @@ -575,7 +581,7 @@ static void GetNameInfo3(EvalContext *ctx)
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "masterdir", GetMasterDir(), CF_DATA_TYPE_STRING, "source=agent");
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "inputdir", GetInputDir(), CF_DATA_TYPE_STRING, "source=agent");

snprintf(workbuf, CF_BUFSIZE, "%s%cbin", CFWORKDIR, FILE_SEPARATOR);
snprintf(workbuf, CF_BUFSIZE, "%s%cbin", workdir, FILE_SEPARATOR);
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_SYS, "bindir", workbuf, CF_DATA_TYPE_STRING, "source=agent");

snprintf(workbuf, CF_BUFSIZE, "%s%cfailsafe.cf", GetInputDir(), FILE_SEPARATOR);
Expand Down Expand Up @@ -612,16 +618,16 @@ static void GetNameInfo3(EvalContext *ctx)
// twin has own dir, and is named agent
if (i == 0)
{
snprintf(name, CF_MAXVARSIZE - 1, "%s%cbin-twin%ccf-agent.exe", CFWORKDIR, FILE_SEPARATOR,
snprintf(name, CF_MAXVARSIZE - 1, "%s%cbin-twin%ccf-agent.exe", workdir, FILE_SEPARATOR,
FILE_SEPARATOR);
}
else
{
snprintf(name, CF_MAXVARSIZE - 1, "%s%cbin%c%s.exe", CFWORKDIR, FILE_SEPARATOR, FILE_SEPARATOR,
snprintf(name, CF_MAXVARSIZE - 1, "%s%cbin%c%s.exe", workdir, FILE_SEPARATOR, FILE_SEPARATOR,
components[i]);
}
#else
snprintf(name, CF_MAXVARSIZE - 1, "%s%cbin%c%s", CFWORKDIR, FILE_SEPARATOR, FILE_SEPARATOR, components[i]);
snprintf(name, CF_MAXVARSIZE - 1, "%s%cbin%c%s", workdir, FILE_SEPARATOR, FILE_SEPARATOR, components[i]);
#endif

have_component[i] = false;
Expand All @@ -641,10 +647,10 @@ static void GetNameInfo3(EvalContext *ctx)
snprintf(shortname, CF_MAXVARSIZE - 1, "%s", CanonifyName(components[0]));

#if defined(_WIN32)
snprintf(name, CF_MAXVARSIZE - 1, "%s%cbin%c%s.exe", CFWORKDIR, FILE_SEPARATOR, FILE_SEPARATOR,
snprintf(name, CF_MAXVARSIZE - 1, "%s%cbin%c%s.exe", workdir, FILE_SEPARATOR, FILE_SEPARATOR,
components[1]);
#else
snprintf(name, CF_MAXVARSIZE - 1, "%s%cbin%c%s", CFWORKDIR, FILE_SEPARATOR, FILE_SEPARATOR, components[1]);
snprintf(name, CF_MAXVARSIZE - 1, "%s%cbin%c%s", workdir, FILE_SEPARATOR, FILE_SEPARATOR, components[1]);
#endif

if (stat(name, &sb) != -1)
Expand Down
3 changes: 2 additions & 1 deletion libenv/unix_iface.c
Expand Up @@ -33,6 +33,7 @@
#include <regex.h> /* StringMatchFull */
#include <files_interfaces.h>
#include <files_names.h>
#include <known_dirs.h>

#ifdef HAVE_SYS_JAIL_H
# include <sys/jail.h>
Expand Down Expand Up @@ -726,7 +727,7 @@ static void InitIgnoreInterfaces()
FILE *fin;
char filename[CF_BUFSIZE],regex[CF_MAXVARSIZE];

snprintf(filename, sizeof(filename), "%s%cinputs%c%s", CFWORKDIR, FILE_SEPARATOR, FILE_SEPARATOR, CF_IGNORE_INTERFACES);
snprintf(filename, sizeof(filename), "%s%cinputs%c%s", GetWorkDir(), FILE_SEPARATOR, FILE_SEPARATOR, CF_IGNORE_INTERFACES);

if ((fin = fopen(filename,"r")) == NULL)
{
Expand Down
2 changes: 0 additions & 2 deletions libpromises/cf3.extern.h
Expand Up @@ -35,8 +35,6 @@ extern RSA *PRIVKEY, *PUBKEY;
extern char BINDINTERFACE[CF_MAXVARSIZE];
extern time_t CONNTIMEOUT;

extern char CFWORKDIR[CF_BUFSIZE];

extern time_t CFSTARTTIME;

extern struct utsname VSYSNAME;
Expand Down
2 changes: 0 additions & 2 deletions libpromises/cf3globals.c
Expand Up @@ -62,8 +62,6 @@ char VFQNAME[CF_MAXVARSIZE] = ""; /* GLOBAL_E GLOBAL_P */
char VUQNAME[CF_MAXVARSIZE] = ""; /* GLOBAL_E */
char VDOMAIN[CF_MAXVARSIZE] = ""; /* GLOBAL_E GLOBAL_P */

char CFWORKDIR[CF_BUFSIZE] = ""; /* GLOBAL_C */

/*
Default value for copytype attribute. Loaded by cf-agent from body control
*/
Expand Down
14 changes: 8 additions & 6 deletions libpromises/crypto.c
Expand Up @@ -138,7 +138,7 @@ static void RandomSeed(void)
/* randseed file is written on deinitialization of crypto system */
char randfile[CF_BUFSIZE];
snprintf(randfile, CF_BUFSIZE, "%s%crandseed",
CFWORKDIR, FILE_SEPARATOR);
GetWorkDir(), FILE_SEPARATOR);
Log(LOG_LEVEL_VERBOSE, "Looking for a source of entropy in '%s'",
randfile);

Expand Down Expand Up @@ -234,14 +234,15 @@ void PolicyHubUpdateKeys(const char *policy_server)
if (GetAmPolicyHub() && NULL != PUBKEY)
{
unsigned char digest[EVP_MAX_MD_SIZE + 1];
const char* const workdir = GetWorkDir();

char dst_public_key_filename[CF_BUFSIZE] = "";
{
char buffer[CF_HOSTKEY_STRING_SIZE];
HashPubKey(PUBKEY, digest, CF_DEFAULT_DIGEST);
snprintf(dst_public_key_filename, sizeof(dst_public_key_filename),
"%s/ppkeys/%s-%s.pub",
CFWORKDIR, "root",
workdir, "root",
HashPrintSafe(buffer, sizeof(buffer), digest,
CF_DEFAULT_DIGEST, true));
MapName(dst_public_key_filename);
Expand All @@ -251,7 +252,7 @@ void PolicyHubUpdateKeys(const char *policy_server)
if ((stat(dst_public_key_filename, &sb) == -1))
{
char src_public_key_filename[CF_BUFSIZE] = "";
snprintf(src_public_key_filename, CF_MAXVARSIZE, "%s/ppkeys/localhost.pub", CFWORKDIR);
snprintf(src_public_key_filename, CF_MAXVARSIZE, "%s/ppkeys/localhost.pub", workdir);
MapName(src_public_key_filename);

// copy localhost.pub to root-HASH.pub on policy server
Expand Down Expand Up @@ -302,18 +303,19 @@ RSA *HavePublicKey(const char *username, const char *ipaddress, const char *dige
struct stat statbuf;
FILE *fp;
RSA *newkey = NULL;
const char* const workdir = GetWorkDir();

snprintf(keyname, CF_MAXVARSIZE, "%s-%s", username, digest);

snprintf(newname, CF_BUFSIZE, "%s/ppkeys/%s.pub", CFWORKDIR, keyname);
snprintf(newname, CF_BUFSIZE, "%s/ppkeys/%s.pub", workdir, keyname);
MapName(newname);

if (stat(newname, &statbuf) == -1)
{
Log(LOG_LEVEL_VERBOSE, "Did not find new key format '%s'", newname);

snprintf(oldname, CF_BUFSIZE, "%s/ppkeys/%s-%s.pub",
CFWORKDIR, username, ipaddress);
workdir, username, ipaddress);
MapName(oldname);
Log(LOG_LEVEL_VERBOSE, "Trying old style '%s'", oldname);

Expand Down Expand Up @@ -390,7 +392,7 @@ void SavePublicKey(const char *user, const char *digest, const RSA *key)
}

ret = snprintf(filename, sizeof(filename), "%s/ppkeys/%s.pub",
CFWORKDIR, keyname);
GetWorkDir(), keyname);
if (ret >= sizeof(filename))
{
Log(LOG_LEVEL_ERR, "Filename too long!");
Expand Down
9 changes: 7 additions & 2 deletions libpromises/evalfunction.c
Expand Up @@ -63,6 +63,7 @@
#include <printsize.h>
#include <csv_parser.h>
#include <json-yaml.h>
#include <known_dirs.h>

#include <math_eval.h>

Expand Down Expand Up @@ -1602,8 +1603,10 @@ static FnCallResult FnCallUseModule(EvalContext *ctx,

char *command = RlistScalarValue(finalargs);
char *args = RlistScalarValue(finalargs->next);
const char* const workdir = GetWorkDir();

snprintf(modulecmd, CF_BUFSIZE, "\"%s%cmodules%c%s\"", CFWORKDIR, FILE_SEPARATOR, FILE_SEPARATOR, command);
snprintf(modulecmd, CF_BUFSIZE, "\"%s%cmodules%c%s\"",
workdir, FILE_SEPARATOR, FILE_SEPARATOR, command);

if (stat(CommandArg0(modulecmd), &statbuf) == -1)
{
Expand All @@ -1623,7 +1626,9 @@ static FnCallResult FnCallUseModule(EvalContext *ctx,
return FnFailure();
}

snprintf(modulecmd, CF_BUFSIZE, "\"%s%cmodules%c%s\" %s", CFWORKDIR, FILE_SEPARATOR, FILE_SEPARATOR, command, args);
snprintf(modulecmd, CF_BUFSIZE, "\"%s%cmodules%c%s\" %s",
workdir, FILE_SEPARATOR, FILE_SEPARATOR, command, args);

Log(LOG_LEVEL_VERBOSE, "Executing and using module [%s]", modulecmd);

if (!ExecModule(ctx, modulecmd))
Expand Down
25 changes: 11 additions & 14 deletions libpromises/generic_agent.c
Expand Up @@ -492,18 +492,22 @@ static bool WriteReleaseIdFile(const char *filename, const char *dirname)
bool GenericAgentArePromisesValid(const GenericAgentConfig *config)
{
char cmd[CF_BUFSIZE];
const char* const workdir = GetWorkDir();

Log(LOG_LEVEL_VERBOSE, "Verifying the syntax of the inputs...");
{
char cfpromises[CF_MAXVARSIZE];
snprintf(cfpromises, sizeof(cfpromises), "%s%cbin%ccf-promises%s", CFWORKDIR, FILE_SEPARATOR, FILE_SEPARATOR,
EXEC_SUFFIX);

snprintf(cfpromises, sizeof(cfpromises), "%s%cbin%ccf-promises%s",
workdir, FILE_SEPARATOR, FILE_SEPARATOR, EXEC_SUFFIX);

struct stat sb;
if (stat(cfpromises, &sb) == -1)
{
Log(LOG_LEVEL_ERR, "cf-promises%s needs to be installed in %s%cbin for pre-validation of full configuration",
EXEC_SUFFIX, CFWORKDIR, FILE_SEPARATOR);
Log(LOG_LEVEL_ERR,
"cf-promises%s needs to be installed in %s%cbin for pre-validation of full configuration",
EXEC_SUFFIX, workdir, FILE_SEPARATOR);

return false;
}

Expand Down Expand Up @@ -595,16 +599,9 @@ void GenericAgentInitialize(EvalContext *ctx, GenericAgentConfig *config)

const char *workdir = GetWorkDir();

/* TODO: CFWORKDIR global gets initialized here. (GLOBAL_C)
* Do not remove this block until its use has been obliterated elsewhere. */
if (!workdir)
{
if (!workdir)
{
FatalError(ctx, "Error determining working directory");
}

strcpy(CFWORKDIR, workdir);
MapName(CFWORKDIR);
FatalError(ctx, "Error determining working directory");
}

OpenLog(LOG_USER);
Expand Down Expand Up @@ -1037,7 +1034,7 @@ bool GenericAgentIsPolicyReloadNeeded(const GenericAgentConfig *config)

{
char filename[MAX_FILENAME];
snprintf(filename, MAX_FILENAME, "%s/policy_server.dat", CFWORKDIR);
snprintf(filename, MAX_FILENAME, "%s%cpolicy_server.dat", GetWorkDir(), FILE_SEPARATOR);
MapName(filename);

struct stat sb;
Expand Down
4 changes: 3 additions & 1 deletion libpromises/keyring.c
Expand Up @@ -27,6 +27,7 @@
#include <keyring.h>
#include <dir.h>
#include <file_lib.h>
#include <known_dirs.h>

/***************************************************************/

Expand Down Expand Up @@ -57,7 +58,8 @@ int RemovePublicKey(const char *id)
const struct dirent *dirp;
char suffix[CF_BUFSIZE];

snprintf(keysdir, CF_BUFSIZE, "%s/ppkeys", CFWORKDIR);
snprintf(keysdir, CF_BUFSIZE, "%s/ppkeys", GetWorkDir());

MapName(keysdir);

if ((dirh = DirOpen(keysdir)) == NULL)
Expand Down
2 changes: 2 additions & 0 deletions tests/unit/generic_agent_test.c
Expand Up @@ -9,6 +9,8 @@
#include <misc_lib.h> /* xsnprintf */


char CFWORKDIR[CF_BUFSIZE];

void test_load_masterfiles(void)
{
EvalContext *ctx = EvalContextNew();
Expand Down
2 changes: 2 additions & 0 deletions tests/unit/mon_processes_test.c
Expand Up @@ -6,6 +6,8 @@
#include <misc_lib.h> /* xsnprintf */
#include <known_dirs.h>

char CFWORKDIR[CF_BUFSIZE];

static void tests_setup(void)
{
xsnprintf(CFWORKDIR, CF_BUFSIZE, "/tmp/mon_processes_test.XXXXXX");
Expand Down

0 comments on commit dcc09de

Please sign in to comment.