Merge authors: James Hunt (jamesodhunt) Related merge proposals: https://code.launchpad.net/~jamesodhunt/upstart/bug-1222705/+merge/204222 proposed by: James Hunt (jamesodhunt) ------------------------------------------------------------ revno: 1602 [merge] committer: Dimitri John Ledkov <[email protected]> branch nick: trunk timestamp: Wed 2014-03-05 14:23:37 +0000 message: merge lp:~jamesodhunt/upstart/bug-1222705 modified: ChangeLog init/job_class.c init/tests/test_job_class.c
-- lp:upstart https://code.launchpad.net/~upstart-devel/upstart/trunk Your team Upstart Reviewers is subscribed to branch lp:upstart. To unsubscribe from this branch go to https://code.launchpad.net/~upstart-devel/upstart/trunk/+edit-subscription
=== modified file 'ChangeLog' --- ChangeLog 2014-03-05 13:30:11 +0000 +++ ChangeLog 2014-03-05 14:23:37 +0000 @@ -26,6 +26,10 @@ - Don't rely on D-Bus any more: spawn a Session Init instead since this is simpler and allows the two major limitations to be dropped. * scripts/man/init-checkconf.8: Updated date and limitations section. + * init/job_class.c: job_class_stop(): Copy env rather than + referencing a local variable (LP: #1222705). + * init/tests/test_job_class.c: test_start(), test_stop(), + test_restart(): Check job->env, job->start_env and job->stop-env. 2014-02-04 Cameron Norman <[email protected]> === modified file 'init/job_class.c' --- init/job_class.c 2014-01-17 12:03:24 +0000 +++ init/job_class.c 2014-01-31 12:42:18 +0000 @@ -1241,8 +1241,9 @@ if (job->stop_env) nih_unref (job->stop_env, job); - job->stop_env = (char **)env; - nih_ref (job->stop_env, job); + job->stop_env = nih_str_array_copy (job, NULL, env); + if (! job->stop_env) + nih_return_system_error (-1); job_finished (job, FALSE); if (blocked) === modified file 'init/tests/test_job_class.c' --- init/tests/test_job_class.c 2013-07-21 23:54:16 +0000 +++ init/tests/test_job_class.c 2014-01-31 12:42:18 +0000 @@ -1569,6 +1569,16 @@ TEST_EQ (job->goal, JOB_START); TEST_EQ (job->state, JOB_STARTING); + TEST_EQ_P (job->start_env, NULL); + TEST_EQ_P (job->stop_env, NULL); + + TEST_NE_P (job->env, NULL); + TEST_EQ_STRN (job->env[0], "PATH="); + TEST_EQ_STRN (job->env[1], "TERM="); + TEST_EQ_P (job->env[2], NULL); + + TEST_NE_P (job->env, env); + TEST_LIST_NOT_EMPTY (&job->blocking); blocked = (Blocked *)job->blocking.next; @@ -1664,6 +1674,15 @@ TEST_LIST_EMPTY (&job->blocking); + TEST_EQ_P (job->start_env, NULL); + TEST_EQ_P (job->stop_env, NULL); + + TEST_NE_P (job->env, NULL); + TEST_EQ_STRN (job->env[0], "PATH="); + TEST_EQ_STRN (job->env[1], "TERM="); + TEST_EQ_P (job->env[2], NULL); + + TEST_NE_P (job->env, env); dbus_connection_flush (conn); @@ -1746,6 +1765,16 @@ TEST_EQ (job->goal, JOB_START); TEST_EQ (job->state, JOB_STOPPING); + TEST_EQ_P (job->env, NULL); + TEST_EQ_P (job->stop_env, NULL); + + TEST_NE_P (job->start_env, NULL); + TEST_EQ_STRN (job->start_env[0], "PATH="); + TEST_EQ_STRN (job->start_env[1], "TERM="); + TEST_EQ_P (job->start_env[2], NULL); + + TEST_NE_P (job->start_env, env); + TEST_LIST_NOT_EMPTY (&job->blocking); blocked = (Blocked *)job->blocking.next; @@ -1906,12 +1935,18 @@ TEST_EQ (job->goal, JOB_START); TEST_EQ (job->state, JOB_STARTING); + TEST_NE_P (job->start_env, env); + TEST_NE_P (job->stop_env, env); + + TEST_NE_P (job->env, NULL); TEST_EQ_STRN (job->env[0], "PATH="); TEST_EQ_STRN (job->env[1], "TERM="); TEST_EQ_STR (job->env[2], "FOO=wibble"); TEST_EQ_STR (job->env[3], "BAR=wobble"); TEST_EQ_P (job->env[4], NULL); + TEST_NE_P (job->env, env); + TEST_LIST_NOT_EMPTY (&job->blocking); blocked = (Blocked *)job->blocking.next; @@ -2087,6 +2122,14 @@ TEST_NOT_FREE (job); + TEST_EQ_P (job->env, NULL); + TEST_EQ_P (job->start_env, NULL); + + TEST_NE_P (job->stop_env, NULL); + TEST_EQ_P (job->stop_env[0], NULL); + + TEST_NE_P (job->stop_env, env); + TEST_EQ (job->goal, JOB_STOP); TEST_EQ (job->state, JOB_STOPPING); @@ -2177,6 +2220,13 @@ TEST_LIST_EMPTY (&job->blocking); + TEST_EQ_P (job->env, NULL); + TEST_EQ_P (job->start_env, NULL); + + TEST_NE_P (job->stop_env, NULL); + TEST_EQ_P (job->stop_env[0], NULL); + + TEST_NE_P (job->stop_env, env); dbus_connection_flush (conn); @@ -2354,10 +2404,16 @@ TEST_EQ (job->goal, JOB_STOP); TEST_EQ (job->state, JOB_STOPPING); + TEST_EQ_P (job->env, NULL); + TEST_EQ_P (job->start_env, NULL); + + TEST_NE_P (job->stop_env, NULL); TEST_EQ_STR (job->stop_env[0], "FOO=wibble"); TEST_EQ_STR (job->stop_env[1], "BAR=wobble"); TEST_EQ_P (job->stop_env[2], NULL); + TEST_NE_P (job->stop_env, env); + TEST_LIST_NOT_EMPTY (&job->blocking); blocked = (Blocked *)job->blocking.next; @@ -2527,6 +2583,16 @@ TEST_EQ (job->goal, JOB_START); TEST_EQ (job->state, JOB_STOPPING); + TEST_EQ_P (job->env, NULL); + TEST_EQ_P (job->stop_env, NULL); + + TEST_NE_P (job->start_env, NULL); + TEST_EQ_STRN (job->start_env[0], "PATH="); + TEST_EQ_STRN (job->start_env[1], "TERM="); + TEST_EQ_P (job->start_env[2], NULL); + + TEST_NE_P (job->start_env, env); + TEST_LIST_NOT_EMPTY (&job->blocking); blocked = (Blocked *)job->blocking.next; @@ -2626,6 +2692,16 @@ TEST_EQ (job->goal, JOB_START); TEST_EQ (job->state, JOB_STOPPING); + TEST_EQ_P (job->env, NULL); + TEST_EQ_P (job->stop_env, NULL); + + TEST_NE_P (job->start_env, NULL); + TEST_EQ_STRN (job->start_env[0], "PATH="); + TEST_EQ_STRN (job->start_env[1], "TERM="); + TEST_EQ_P (job->start_env[2], NULL); + + TEST_NE_P (job->start_env, env); + TEST_LIST_EMPTY (&job->blocking);
-- upstart-devel mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/upstart-devel
