rpmRC rc = RPMRC_OK;
int ret = 0;
+ package_created = 0;
+
if (!root && !rootSWSource) {
/* no sw source config, just exit */
goto exit;
}
headerFree(h);
}
+ package_created = 1;
/* if (!current) {
rpmlog(RPMLOG_INFO, "no sw source for removing %s\n", rpmteN(ctx->te));
goto exit;
goto fail;
}
+ package_created = 1;
if (rootSWSource) {
/* current is root */
root = ctx->mfx;
if (ret) {
rpmlog(RPMLOG_ERR, "SW source setup failed for %s\n",
rpmteN(ctx->te));
- msmCancelPackage(ctx->mfx->name);
goto fail;
}
}
if (ret) {
rpmlog(RPMLOG_ERR, "AC domain setup failed for %s\n",
rpmteN(ctx->te));
- msmCancelPackage(ctx->mfx->name);
goto fail;
} else {
smackLabel = 1;
if (ret) {
rpmlog(RPMLOG_ERR, "Request setup failed for %s\n",
rpmteN(ctx->te));
- msmCancelPackage(ctx->mfx->name);
+ goto fail;
+ }
+ }
+ if (package->provides) {
+ ret = msmSetupDBusPolicies(package, ctx->mfx);
+ if (ret) {
+ rpmlog(RPMLOG_ERR, "Setting up dbus policies for %s failed\n",
+ rpmteN(ctx->te));
goto fail;
}
}
if (ret) {
rpmlog(RPMLOG_ERR, "Setting up smack rules for %s failed\n",
rpmteN(ctx->te));
- msmCancelPackage(ctx->mfx->name);
goto fail;
}
}
- if (package->provides) {
- ret = msmSetupDBusPolicies(package, ctx->mfx);
- if (ret) {
- rpmlog(RPMLOG_ERR, "Setting up dbus policies for %s failed\n",
- rpmteN(ctx->te));
- msmCancelPackage(ctx->mfx->name);
- goto fail;
- }
- }
/* last check is needed in order to catch in advance
the situation when no ac domain defined or requested */
if (smackLabel == 0) {
rpmlog(RPMLOG_ERR, "No ac domain defined or requested for package %s. Abort.\n", rpmteN(ctx->te));
- msmCancelPackage(ctx->mfx->name);
goto fail;
}
}
} else if (rpmteDependsOn(ctx->te)) { /* TR_REMOVED */
+ package_created = 1;
rpmlog(RPMLOG_DEBUG, "upgrading package %s by %s\n",
rpmteNEVR(ctx->te), rpmteNEVR(rpmteDependsOn(ctx->te)));
} else if (mfx->sw_sources) {
}
rpmlog(RPMLOG_DEBUG, "Finished with pre psm hook \n");
- package_created = 1;
goto exit;
rpmRC PLUGINHOOK_PSM_POST_FUNC(rpmte te, int rpmrc)
{
- int ret = 0;
packagecontext *ctx = context;
if (!ctx) return RPMRC_FAIL;
/* failure in rpm psm, rollback */
if (rpmteType(ctx->te) == TR_ADDED)
msmCancelPackage(ctx->mfx->name);
- goto exit;
+ return RPMRC_FAIL;
}
if (!ctx->mfx){
rpmlog(RPMLOG_ERR, "Manifest is missing while it should be present for the package %s\n",
rpmteN(ctx->te));
- goto exit;
+ return RPMRC_FAIL;
}
if (rootSWSource) {
}
}
- exit:
- current = NULL;
-
- if (ret) {
- return RPMRC_FAIL;
- }
return rpmrc;
}
node_x *node;
interface_x *interface;
member_x *member;
- int ret = -1;
+ int ret = 0;
char *sysconfdir = rpmExpand("%{?_sysconfdir}", NULL);
if (!sysconfdir || !strcmp(sysconfdir, "")) {
rpmlog(RPMLOG_ERR, "Failed to expand %%_sysconfdir macro\n");
+ ret = -1;
goto exit;
}
snprintf(path, sizeof(path), "%s/dbus-1/%s.d/manifest.%s.conf",
file = fopen(path, phase ? "a" : "w");
if (!file) {
rpmlog(RPMLOG_ERR, "Cannot open %s: %s\n", path, strerror(errno));
+ ret = -1;
goto exit;
}
if (fputs(data, file) == EOF) {
rpmlog(RPMLOG_ERR, "Failed to write %s: %s\n",
path, strerror(errno));
+ ret = -1;
goto exit;
}
}
if (fputs(data, file) == EOF) {
rpmlog(RPMLOG_ERR, "Failed to write %s: %s\n",
path, strerror(errno));
+ ret = -1;
goto exit;
}
}
}
for (node = dbus->nodes; node; node = node->prev) {
if (node->annotation) {
- msmSetupDBusRule(file, node->annotation->value, DBUS_PATH,
+ ret = msmSetupDBusRule(file, node->annotation->value, DBUS_PATH,
dbus->name, node->name, NULL, NULL, mfx);
+ if (ret < 0) goto exit;
}
for (member = node->members; member; member = member->prev) {
if (member->annotation) {
- msmSetupDBusRule(file, member->annotation->value, member->type,
+ ret = msmSetupDBusRule(file, member->annotation->value, member->type,
dbus->name, member->name,
"path", node->name, mfx);
+ if (ret < 0) goto exit;
}
}
for (interface = node->interfaces; interface; interface = interface->prev) {
if (interface->annotation) {
- msmSetupDBusRule(file, interface->annotation->value, DBUS_INTERFACE,
+ ret = msmSetupDBusRule(file, interface->annotation->value, DBUS_INTERFACE,
dbus->name, interface->name, NULL, NULL, mfx);
+ if (ret < 0) goto exit;
}
for (member = interface->members; member; member = member->prev) {
if (member->annotation) {
- msmSetupDBusRule(file, member->annotation->value, member->type,
+ ret = msmSetupDBusRule(file, member->annotation->value, member->type,
dbus->name, member->name,
"interface", interface->name, mfx);
+ if (ret < 0) goto exit;
}
}
}
if (fputs(data, file) == EOF) {
rpmlog(RPMLOG_ERR, "Failed to write %s: %s\n",
path, strerror(errno));
+ ret = -1;
goto exit;
}
rpmlog(RPMLOG_DEBUG, "wrote dbus config %s\n", path);
exit:
if (file) fclose(file);
- if (ret) unlink(path);
+ if (ret < 0) unlink(path);
msmFreePointer((void**)&sysconfdir);
return ret;
}
dbus_x *system = NULL;
provide_x *provide;
dbus_x *dbus;
+ int ret = 0;
for (provide = package->provides; provide; provide = provide->prev) {
for (dbus = provide->dbuss; dbus; dbus = dbus->prev) {
if (!strcmp(dbus->bus, "session")) {
- msmSetupDBusConfig(package, dbus, session ? 1 : 0, mfx);
+ ret = msmSetupDBusConfig(package, dbus, session ? 1 : 0, mfx);
session = dbus;
} else if (!strcmp(dbus->bus, "system")) {
- msmSetupDBusConfig(package, dbus, system ? 1 : 0, mfx);
+ ret = msmSetupDBusConfig(package, dbus, system ? 1 : 0, mfx);
system = dbus;
} else return -1;
+ if (ret < 0) return ret;
}
- if (session) msmSetupDBusConfig(package, session, -1, mfx);
- if (system) msmSetupDBusConfig(package, system, -1, mfx);
+ if (session) ret = msmSetupDBusConfig(package, session, -1, mfx);
+ if (system) ret = msmSetupDBusConfig(package, system, -1, mfx);
session = system = NULL;
}
- return 0;
+ return ret;
}
static int msmCheckDomainRequestOrPermit(manifest_x *mfx, const char* domain)