Skip to content

Fix undefined error in Gitlab::Git::Diff

Vasilii Iakliushin requested to merge fix_nil_class_for_bytesize_error into master

What does this MR do?

It adds tests to highlight the problem when we initialize Gitlab::Git::Diff with Gitaly::CommitDelta instance.

Gitaly::CommitDelta does not have a patch attribute. That leads to the problem with methods #too_large?, #collapsed?, #has_binary_notice? and #to_hash. Any calls to these methods raise an exception.

Here is an example of the error:

Failure/Error: @too_large = @diff.bytesize >= self.class.patch_hard_limit_bytes
     
NoMethodError:
 undefined method `bytesize' for nil:NilClass

Solution

I was considering the option of providing safe-handing (&. for instance) for methods that rely on @diff being a String object. However, it doesn't solve the root problem that @diff has a nil value. As a result, I explicitly set @diff to have an empty string value if the #patch attribute is not defined.

Screenshots

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • [-] Label as security and @ mention @gitlab-com/gl-security/appsec
  • [-] The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • [-] Security reports checked/validated by a reviewer from the AppSec team
Edited by Peter Leitzen

Merge request reports

Loading