Skip to content

checked-c-convert tool: struct variable containing a checked pointer not initialized #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
hasantouma opened this issue Jun 20, 2019 · 3 comments
Labels
bug Something isn't working

Comments

@hasantouma
Copy link
Collaborator

hasantouma commented Jun 20, 2019

I noticed this issue when converting the Icecast code. In the file src/avl/avl.c and various others.

The C compiler doesn't complain when a struct variable is not initialized, but the Checked C compiler does. The checked-c-convert tool doesn't give an warnings that an initialized struct variable was seen.

I created a small example for reference:

Original C code:

typedef struct _link_node {
  struct _link_node *parent;
  int width;
} link_node;

int add_to_link_node(link_node *node) {

  node->width += 5;

  return node->width;
}

int main() {

  link_node here;
  here.width = 10;

  return add_to_link_node(&here);
}

checked-c-convert output:

typedef struct _link_node {
  _Ptr<struct _link_node> parent;
  int width;
} link_node;

int add_to_link_node(_Ptr<link_node> node) {

  node->width += 5;

  return node->width;
}

int main() {

  link_node here;
  here.width = 10;

  return add_to_link_node(&here);
}

Running clang on the checked-c-convert output will produce the error:
error: struct variable 'here' containing a checked pointer must have an initializer

@hasantouma hasantouma added the bug Something isn't working label Jul 12, 2019
@Machiry
Copy link
Collaborator

Machiry commented Jul 13, 2019

A part of this issue is fixed by this commit: 51b6167

Machiry added a commit that referenced this issue Jul 13, 2019
@Machiry
Copy link
Collaborator

Machiry commented Jul 13, 2019

@hasantouma Please pull the branch: https://github.com/plum-umd/checkedc-clang/tree/WIP/IterativeItypeRefinement and test. If the issue is resolved. Please close this issue.

@hasantouma
Copy link
Collaborator Author

@Machiry Yes, this commit does fix the initialization issue. I'll close this issue now. Thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants