/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to dracut-module/password-agent.c

  • Committer: teddy at recompile
  • Date: 2020-11-29 22:54:26 UTC
  • Revision ID: teddy@recompile.se-20201129225426-6ud4hwj36zo67igi
Fix flaky test in password-agent

The test_send_password_to_socket_EMSGSIZE function should not use a
hard-coded constant to trigger an EMSGSIZE error from send().

* dracut-module/password-agent.c (send_password_to_socket): Only save
  errno from send() if it returned < 0.  Show strerror(errno) if
  send() does return EMSGSIZE.  Show number of bytes sent if send()
  sends less than all bytes.
  (test_send_password_to_socket_EMSGSIZE): Do not skip this test on
  non-AMD64 platforms.  Try to find a suitable message size to trigger
  EMSGSIZE before testing send_password_to_socket(), and only skip
  this test if such a triggering message size is not found.

Reported-By: Simon McVittie <smcv@debian.org>
Closes: #975457

Show diffs side-by-side

added added

removed removed

Lines of Context:
5978
5978
      g_test_skip("Skipping EMSGSIZE test: Will not try 1GiB");
5979
5979
      return;
5980
5980
    }
5981
 
    message_buffer = realloc(message_buffer, message_size);
 
5981
    free(message_buffer);
 
5982
    message_buffer = malloc(message_size);
5982
5983
    if(message_buffer == NULL){
5983
5984
      g_test_skip("Skipping EMSGSIZE test");
5984
5985
      g_test_message("Failed to malloc() %" PRIuMAX " bytes",
6005
6006
        g_test_message("Error on send(): %s", strerror(saved_errno));
6006
6007
        return;
6007
6008
      }
6008
 
      break;
6009
6009
    } else if(ssret != (ssize_t)message_size){
6010
6010
      g_test_skip("Skipping EMSGSIZE test");
6011
6011
      g_test_message("Partial send(): %" PRIuMAX " of %" PRIdMAX