diff -aur ../mantisbt-1.2.12/bug_update_advanced_page.php ./bug_update_advanced_page.php
--- bug_update_advanced_page.php	2012-11-11 23:10:40.000000000 +0000
+++ bug_update_advanced_page.php	2013-04-06 19:33:11.931150001 +0000
@@ -49,7 +49,12 @@
 	trigger_error( ERROR_BUG_READ_ONLY_ACTION_DENIED, ERROR );
 }
 
-access_ensure_bug_level( config_get( 'update_bug_threshold' ), $f_bug_id );
+if ( ON == config_get( 'allow_reporter_update' ) ) {
+	if( bug_is_user_reporter( $f_bug_id, auth_get_current_user_id() ) ) {
+		access_ensure_bug_level( config_get( 'report_bug_threshold' ), $f_bug_id );
+	}
+}
+else access_ensure_bug_level( config_get( 'update_bug_threshold' ), $f_bug_id );
 
 html_page_top( bug_format_summary( $f_bug_id, SUMMARY_CAPTION ) );
 
diff -aur ../mantisbt-1.2.12/bug_update.php ./bug_update.php
--- bug_update.php	2012-11-11 23:10:40.000000000 +0000
+++ bug_update.php	2013-04-06 19:24:54.943149999 +0000
@@ -53,6 +53,7 @@
 				&& access_has_bug_level( config_get( 'report_bug_threshold' ), $f_bug_id, $t_user )
 				&& (   ON == config_get( 'allow_reporter_reopen' )
 					|| ON == config_get( 'allow_reporter_close' )
+					|| ON == config_get( 'allow_reporter_update' )
 				   )
 			   )
 		  )
diff -aur ../mantisbt-1.2.12/config_defaults_inc.php ./config_defaults_inc.php
--- config_defaults_inc.php	2012-11-11 23:10:40.000000000 +0000
+++ config_defaults_inc.php	2013-04-06 19:46:50.403150021 +0000
@@ -2575,6 +2575,13 @@
 	$g_allow_reporter_reopen	= ON;
 
 	/**
+	 * reporter can update
+	 * Allow reporters to update the bugs they reported, without being able to update any other bugs.
+	 * @global int $g_allow_reporter_update
+	 */
+	$g_allow_reporter_update	= OFF;
+
+	/**
 	 * reporter can upload
 	 * Allow reporters to upload attachments to bugs they reported.
 	 * @global int $g_allow_reporter_upload
diff -aur ../mantisbt-1.2.12/core/html_api.php ./core/html_api.php
--- core/html_api.php	2012-11-11 23:10:40.000000000 +0000
+++ core/html_api.php	2013-04-06 19:14:43.679150001 +0000
@@ -1370,7 +1370,12 @@
  * @return null
  */
 function html_button_bug_update( $p_bug_id ) {
-	if( access_has_bug_level( config_get( 'update_bug_threshold' ), $p_bug_id ) ) {
+	if( access_has_bug_level( config_get( 'update_bug_threshold' ), $p_bug_id ) ||
+		( access_has_bug_level( config_get( 'report_bug_threshold' ), $p_bug_id ) &&
+			bug_is_user_reporter( $p_bug_id, auth_get_current_user_id() ) &&
+			ON == config_get( 'allow_reporter_update' )
+			)
+		) {
 		html_button( string_get_bug_update_page(), lang_get( 'update_bug_button' ), array( 'bug_id' => $p_bug_id ) );
 	}
 }
