Index: modules/uc_addresses/uc_addresses.module
===================================================================
@@ -852,10 +852,6 @@
 
   $uid = $address_user->uid;
   $aid = $address ? $address->aid : 0;
-  $form_state['storage']['user'] = $address_user;
-  $form_state['storage']['address'] = $address;
-  $form_state['storage']['view'] = $view;
-
   // Get the panes to display
 
   $form['panes'] = array('#tree' => TRUE);
@@ -963,20 +959,30 @@
 function uc_addresses_get_address_form_submit($form, &$form_state) {
   global $user;
 
-  $address_user = $form_state['storage']['user'];
-  $address = $form_state['storage']['address'];
-  $view = $form_state['storage']['view'];
+  $uid = arg(1);
+  if (arg(3) == 'add') {
+    $view = 'add';
+    $aid = 0;
+  } else {
+    $view = 'edit';
+    $aid = arg(3);
+  }
+  $address = new stdClass();
+  $address->uid = $uid;
+  $address->aid = $aid;
+  // Not sure if permissions check nessisarily happens before here.
+  // Make sure users cann't edit other users addresses
+  if (!uc_addresses_can_add_edit_address($address)) {
+    drupal_set_message(t('Permissioned denied.'));
+    drupal_goto('user/'. $user->uid .'/addresses/');
+  }
+  
 
   if ($form_state['clicked_button']['#value'] == t('Delete address')) {
       cache_clear_all();
-      drupal_goto('user/'. $address_user->uid .'/addresses/' . $address->aid . '/delete');
+      drupal_goto('user/'. $uid .'/addresses/' . $aid . '/delete');
   }
 
-  if (!$address) {
-    $address = new stdClass();
-    $address->uid = $address_user->uid;
-  }
-
   $valid = TRUE;
   foreach (element_children($form_state['values']['panes']) as $pane_id) {
     $func = _address_pane_data($pane_id, 'callback');
@@ -993,7 +999,7 @@
     _uc_addresses_db_add_address($address);
   }
 
-  drupal_goto('user/'. $address_user->uid .'/addresses');
+  drupal_goto('user/'. $uid .'/addresses');
 }
 
 /**
