{"action":"created","comment":{"url":"https://api.github.com/repos/radare/radare2/pulls/comments/91794563","pull_request_review_id":12307398,"id":91794563,"diff_hunk":"@@ -0,0 +1,303 @@\n+#include <r_types.h>\n+#include <r_util.h>\n+#include <r_lib.h>\n+#include <r_bin.h>\n+#include <r_io.h>\n+\n+#include \"bflt/bflt.h\"\n+\n+static void *load_bytes(RBinFile *arch, const ut8 *buf, ut64 sz, ut64 loaddr, Sdb *sdb) {\n+\tstruct r_bin_bflt_obj *res;\n+\tRBuffer *tbuf = NULL;\n+\n+\tif (!buf || !sz || sz == UT64_MAX) {\n+\t\treturn NULL;\n+\t}\n+\ttbuf = r_buf_new ();\n+\tr_buf_set_bytes (tbuf, buf, sz);\n+\tres = r_bin_bflt_new_buf (tbuf);\n+\tr_buf_free (tbuf);\n+\treturn res;\n+}\n+\n+static int load(RBinFile *arch) {\n+\tconst ut8 *bytes = r_buf_buffer (arch->buf);\n+\tut64 sz = r_buf_size (arch->buf);\n+\n+\tarch->o->bin_obj = load_bytes (arch, bytes, sz, arch->o->loadaddr, arch->sdb);\n+\treturn arch->o->bin_obj ? true : false;\n+}\n+\n+static RList *entries(RBinFile *arch) {\n+\tstruct r_bin_bflt_obj *obj = (struct r_bin_bflt_obj*)arch->o->bin_obj;\n+\tRList *ret;\n+\tRBinAddr *ptr;\n+\n+\tif (!(ret = r_list_newf (free))) {\n+\t\treturn NULL;\n+\t}\n+\tptr = r_bflt_get_entry (obj);\n+\tif (!ptr) {\n+\t\treturn NULL;\n+\t}\n+\tr_list_append (ret, ptr);\n+\treturn ret;\n+}\n+\n+static void __patch_reloc (RBuffer *r_buf, struct bflt_relocation_t *reloc) {\n+\tchar s[32];\n+\tint len, ret;\n+\tut8 *buf;\n+\tut32 val;\n+\n+\tval = reloc->data;\n+\tsnprintf (s, sizeof (s), \"%08x\", val);\n+\tbuf = calloc (strlen (s), 1);\n+\n+\tif (!buf) {\n+\t\treturn;\n+\t}\n+\tlen = r_hex_str2bin (s, buf);\n+\tret = r_buf_write_at (r_buf, reloc->addr_to_patch, buf, len);\n+\tif (ret == -1) {\n+\t\teprintf (\"Error\\n\");\n+\t}\n+\tfree (buf);\n+}\n+\n+static RList *patch_relocs(RBin *b) {\n+\tstruct r_bin_bflt_obj *bin;\n+\tstruct bflt_relocation_t *reloc_table;\n+\tRList *list;\n+\tRBinReloc *reloc;\n+\tRBinObject *obj;\n+\tint i;\n+\t\n+\tobj = r_bin_cur_object (b);\n+\tif (!obj) {\n+\t\treturn NULL;\n+\t}\n+\tbin = obj->bin_obj;\n+\treloc_table = bin->bflt_reloc_table;\n+\tlist = r_list_new ();\n+\tif (!list) {\n+\t\treturn NULL;\n+\t}\n+\t\n+\tfor(i = 0; i < bin->hdr->reloc_count; i++) {\n+\t\t__patch_reloc (bin->b, &reloc_table[i]);\n+\t\tRBinReloc *reloc = R_NEW0 (RBinReloc);\n+\t\treloc->type = R_BIN_RELOC_32;\n+\t\treloc->paddr = reloc_table[i].addr_to_patch;\n+\t\treloc->vaddr = reloc->paddr;\n+\t\tr_list_append (list, reloc);\t\n+\t}\n+\t\n+\tfree (reloc_table);\n+\treturn list;\n+}\n+\n+static int get_ngot_entries(struct r_bin_bflt_obj *obj) {\n+\tint i, len;\n+\n+\tfor (i = 0 ;; i++) {\n+\t\tut32 entry;\n+\t\tlen = r_buf_read_at (obj->b, obj->hdr->data_start + (i * 4), (ut8 *)&entry, sizeof (ut32));\n+\t\tif (len != sizeof (ut32)) {\n+\t\t\tgoto fail;\n+\t\t\n+\t\t}\n+\t\tentry = r_swap_ut32 (entry);\n+\t\tif (!VALID_GOT_ENTRY (entry)) {\n+\t\t\tbreak;\n+\t\t}\n+\t}\n+\treturn i;\n+fail:\n+\treturn 0;\n+}\n+\n+static RList *relocs(RBinFile *arch) {\n+\tstruct r_bin_bflt_obj *obj = (struct r_bin_bflt_obj*)arch->o->bin_obj;\n+\tstruct bflt_relocation_t *bflt_reloc_table = NULL;\n+\tRList *list;\n+\tint i, len, n_got = 0, n_reloc = 0;\n+\t\n+\tlist = r_list_new ();\n+\tif (!list || !obj) {\n+\t\tr_list_free (list);\n+\t\treturn NULL;\n+\t}\n+\tn_reloc = obj->hdr->reloc_count;\n+\tif (obj->hdr->flags & FLAT_FLAG_GOTPIC) {\n+\t\tn_got = get_ngot_entries (obj);\n+\t\tn_reloc += n_got;\n+\t}\n+\tbflt_reloc_table = calloc (1, n_reloc * sizeof (struct bflt_relocation_t));\n+\tif (!bflt_reloc_table) {\n+\t\treturn list;\n+\t}\n+\tif (obj->hdr->flags & FLAT_FLAG_GOTPIC) {\n+\t\tut32 offset;\n+\t\tfor (offset = 0, i = 0; i < n_got; i++, offset += 4) {\n+\t\t\tut32 got_entry;\n+\t\t\tlen = r_buf_read_at (obj->b, obj->hdr->data_start + offset, (ut8 *)&got_entry, sizeof (ut32));\n+\t\t\tgot_entry = r_swap_ut32 (got_entry);\n+\t\t\tif (VALID_GOT_ENTRY (got_entry)) {\n+\t\t\t\tbflt_reloc_table[i].addr_to_patch = got_entry;\n+\t\t\t\tbflt_reloc_table[i].data = got_entry + BFLT_HDR_SIZE;\n+\t\t\t} else {\n+\t\t\t\tbreak;\n+\t\t\t}\n+\t\t}\n+\t}\n+\n+\tfor(i = 0; i < obj->hdr->reloc_count; i++) {","path":"libr/bin/p/bin_bflt.c","position":155,"original_position":155,"commit_id":"a6163b39b6fbb23a47ca36bea081abe754fb56e3","original_commit_id":"a6163b39b6fbb23a47ca36bea081abe754fb56e3","user":{"login":"radare","id":917142,"avatar_url":"https://avatars.githubusercontent.com/u/917142?v=3","gravatar_id":"","url":"https://api.github.com/users/radare","html_url":"https://github.com/radare","followers_url":"https://api.github.com/users/radare/followers","following_url":"https://api.github.com/users/radare/following{/other_user}","gists_url":"https://api.github.com/users/radare/gists{/gist_id}","starred_url":"https://api.github.com/users/radare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/radare/subscriptions","organizations_url":"https://api.github.com/users/radare/orgs","repos_url":"https://api.github.com/users/radare/repos","events_url":"https://api.github.com/users/radare/events{/privacy}","received_events_url":"https://api.github.com/users/radare/received_events","type":"User","site_admin":false},"body":"missing space","created_at":"2016-12-09T21:01:40Z","updated_at":"2016-12-09T21:01:40Z","html_url":"https://github.com/radare/radare2/pull/6299#discussion_r91794563","pull_request_url":"https://api.github.com/repos/radare/radare2/pulls/6299","_links":{"self":{"href":"https://api.github.com/repos/radare/radare2/pulls/comments/91794563"},"html":{"href":"https://github.com/radare/radare2/pull/6299#discussion_r91794563"},"pull_request":{"href":"https://api.github.com/repos/radare/radare2/pulls/6299"}}},"pull_request":{"url":"https://api.github.com/repos/radare/radare2/pulls/6299","id":97378596,"html_url":"https://github.com/radare/radare2/pull/6299","diff_url":"https://github.com/radare/radare2/pull/6299.diff","patch_url":"https://github.com/radare/radare2/pull/6299.patch","issue_url":"https://api.github.com/repos/radare/radare2/issues/6299","number":6299,"state":"open","locked":false,"title":"Add: Initial support for bFLT #6129","user":{"login":"leberus","id":8247317,"avatar_url":"https://avatars.githubusercontent.com/u/8247317?v=3","gravatar_id":"","url":"https://api.github.com/users/leberus","html_url":"https://github.com/leberus","followers_url":"https://api.github.com/users/leberus/followers","following_url":"https://api.github.com/users/leberus/following{/other_user}","gists_url":"https://api.github.com/users/leberus/gists{/gist_id}","starred_url":"https://api.github.com/users/leberus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leberus/subscriptions","organizations_url":"https://api.github.com/users/leberus/orgs","repos_url":"https://api.github.com/users/leberus/repos","events_url":"https://api.github.com/users/leberus/events{/privacy}","received_events_url":"https://api.github.com/users/leberus/received_events","type":"User","site_admin":false},"body":"Hi, this an initial support for bFLT. \r\nSo far, bFLT get loaded on the entry address. \r\n\r\nBut there are still weird things. f.i:\r\n\r\n```\r\n.LC0:\r\n\t.ascii\t\"a: %d %d\\012\\000\"\r\n\t.text\r\n\t.align\t2\r\n\t.global\tmain\r\n\t.type\tmain, %function\r\nmain:\r\n\t@ Function supports interworking.\r\n\t@ args = 0, pretend = 0, frame = 16\r\n\t@ frame_needed = 1, uses_anonymous_args = 0\r\n\tstmfd\tsp!, {fp, lr}\r\n\tadd\tfp, sp, #4\r\n\tsub\tsp, sp, #16\r\n\tstr\tr0, [fp, #-16]\r\n\tstr\tr1, [fp, #-20]\r\n\tldr\tr3, .L3\r\n\tstr\tr3, [fp, #-8]\r\n\tldr\tr3, .L3+4\r\n\tstr\tr3, [fp, #-12]\r\n\tldr\tr2, [fp, #-12]\r\n\tldr\tr1, [fp, #-8]\r\n\tldr\tr0, .L3+8\r\n\tbl\tprintf\r\n\tmov\tr3, #0\r\n\tmov\tr0, r3\r\n\tsub\tsp, fp, #4\r\n\t@ sp needed\r\n\tldmfd\tsp!, {fp, lr}\r\n\tbx\tlr\r\n.L4:\r\n\t.align\t2\r\n.L3:\r\n\t.word\t-559038737\r\n\t.word\t57005\r\n\t.word\t.LC0\r\n\t.size\tmain, .-main\r\n\t.ident\t\"GCC: (GNU) 5.4.0\"\r\n```\r\n\r\n```\r\nl@bananapi:~$ r2 ./test\r\n -- rax2 -s 20e296b20ae296b220e296b20\r\n[0x00000044]> pd 10 @0x0000015c\r\n            0x0000015c      10000be5       str r0, [fp, -0x10]\r\n            0x00000160      14100be5       str r1, [fp, -0x14]\r\n            0x00000164      2c309fe5       ldr r3, [0x00000198]        ; [0x198:4]=0xdeadbeef\r\n            0x00000168      08300be5       str r3, [fp, -8]\r\n            0x0000016c      28309fe5       ldr r3, [0x0000019c]        ; [0x19c:4]=0xdead\r\n            0x00000170      0c300be5       str r3, [fp, -0xc]\r\n            0x00000174      0c201be5       ldr r2, [fp, -0xc]\r\n            0x00000178      08101be5       ldr r1, [fp, -8]\r\n            0x0000017c      1c009fe5       ldr r0, [0x000001a0]        ; [0x1a0:4]=0xc0440000\r\n            0x00000180      070000eb       bl 0x1a4\r\n[0x00000044]>\r\n```\r\n\r\nAt 0x180 should jump to printf, but...:\r\n\r\n```\r\n[0x00000044]> pd 10 @0x000001a4\r\n            0x000001a4      0f002de9       push {r0, r1, r2, r3}\r\n            0x000001a8      07402de9       push {r0, r1, r2, lr}\r\n            0x000001ac      20309fe5       ldr r3, [0x000001d4]        ; [0x1d4:4]=0x50490000\r\n            0x000001b0      14208de2       add r2, sp, 0x14\r\n            0x000001b4      10109de5       ldr r1, [sp, 0x10]\r\n            0x000001b8      000093e5       ldr r0, [r3]\r\n            0x000001bc      04208de5       str r2, [sp, 4]\r\n            0x000001c0      340000eb       bl 0x298\r\n            0x000001c4      0cd08de2       add sp, sp, 0xc\r\n            0x000001c8      04e09de4       pop {lr}\r\n[0x00000044]>\r\n```\r\n\r\nSomething got messed I think (maybe because of relocations).\r\n\r\nThis is why I would like that someone could take a look at this, because I \"think\" I'm not doing anything wrong (actually the relocation calculation seems pretty simple), but it must be.\r\n\r\nI've uploaded the files I'm using:\r\n\r\n$ file test\r\ntest: BFLT executable - version 4 ram\r\n\r\n\r\n\r\n\r\n[files.zip](https://github.com/radare/radare2/files/643188/files.zip)\r\n\r\n","created_at":"2016-12-09T20:55:23Z","updated_at":"2016-12-09T21:01:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7b8da5517f5f2d4f5a9613386ed2e3652819dabd","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/radare/radare2/pulls/6299/commits","review_comments_url":"https://api.github.com/repos/radare/radare2/pulls/6299/comments","review_comment_url":"https://api.github.com/repos/radare/radare2/pulls/comments{/number}","comments_url":"https://api.github.com/repos/radare/radare2/issues/6299/comments","statuses_url":"https://api.github.com/repos/radare/radare2/statuses/a6163b39b6fbb23a47ca36bea081abe754fb56e3","head":{"label":"leberus:6129","ref":"6129","sha":"a6163b39b6fbb23a47ca36bea081abe754fb56e3","user":{"login":"leberus","id":8247317,"avatar_url":"https://avatars.githubusercontent.com/u/8247317?v=3","gravatar_id":"","url":"https://api.github.com/users/leberus","html_url":"https://github.com/leberus","followers_url":"https://api.github.com/users/leberus/followers","following_url":"https://api.github.com/users/leberus/following{/other_user}","gists_url":"https://api.github.com/users/leberus/gists{/gist_id}","starred_url":"https://api.github.com/users/leberus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leberus/subscriptions","organizations_url":"https://api.github.com/users/leberus/orgs","repos_url":"https://api.github.com/users/leberus/repos","events_url":"https://api.github.com/users/leberus/events{/privacy}","received_events_url":"https://api.github.com/users/leberus/received_events","type":"User","site_admin":false},"repo":{"id":60738262,"name":"radare2","full_name":"leberus/radare2","owner":{"login":"leberus","id":8247317,"avatar_url":"https://avatars.githubusercontent.com/u/8247317?v=3","gravatar_id":"","url":"https://api.github.com/users/leberus","html_url":"https://github.com/leberus","followers_url":"https://api.github.com/users/leberus/followers","following_url":"https://api.github.com/users/leberus/following{/other_user}","gists_url":"https://api.github.com/users/leberus/gists{/gist_id}","starred_url":"https://api.github.com/users/leberus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leberus/subscriptions","organizations_url":"https://api.github.com/users/leberus/orgs","repos_url":"https://api.github.com/users/leberus/repos","events_url":"https://api.github.com/users/leberus/events{/privacy}","received_events_url":"https://api.github.com/users/leberus/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/leberus/radare2","description":"unix-like reverse engineering framework and commandline tools","fork":true,"url":"https://api.github.com/repos/leberus/radare2","forks_url":"https://api.github.com/repos/leberus/radare2/forks","keys_url":"https://api.github.com/repos/leberus/radare2/keys{/key_id}","collaborators_url":"https://api.github.com/repos/leberus/radare2/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/leberus/radare2/teams","hooks_url":"https://api.github.com/repos/leberus/radare2/hooks","issue_events_url":"https://api.github.com/repos/leberus/radare2/issues/events{/number}","events_url":"https://api.github.com/repos/leberus/radare2/events","assignees_url":"https://api.github.com/repos/leberus/radare2/assignees{/user}","branches_url":"https://api.github.com/repos/leberus/radare2/branches{/branch}","tags_url":"https://api.github.com/repos/leberus/radare2/tags","blobs_url":"https://api.github.com/repos/leberus/radare2/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/leberus/radare2/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/leberus/radare2/git/refs{/sha}","trees_url":"https://api.github.com/repos/leberus/radare2/git/trees{/sha}","statuses_url":"https://api.github.com/repos/leberus/radare2/statuses/{sha}","languages_url":"https://api.github.com/repos/leberus/radare2/languages","stargazers_url":"https://api.github.com/repos/leberus/radare2/stargazers","contributors_url":"https://api.github.com/repos/leberus/radare2/contributors","subscribers_url":"https://api.github.com/repos/leberus/radare2/subscribers","subscription_url":"https://api.github.com/repos/leberus/radare2/subscription","commits_url":"https://api.github.com/repos/leberus/radare2/commits{/sha}","git_commits_url":"https://api.github.com/repos/leberus/radare2/git/commits{/sha}","comments_url":"https://api.github.com/repos/leberus/radare2/comments{/number}","issue_comment_url":"https://api.github.com/repos/leberus/radare2/issues/comments{/number}","contents_url":"https://api.github.com/repos/leberus/radare2/contents/{+path}","compare_url":"https://api.github.com/repos/leberus/radare2/compare/{base}...{head}","merges_url":"https://api.github.com/repos/leberus/radare2/merges","archive_url":"https://api.github.com/repos/leberus/radare2/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/leberus/radare2/downloads","issues_url":"https://api.github.com/repos/leberus/radare2/issues{/number}","pulls_url":"https://api.github.com/repos/leberus/radare2/pulls{/number}","milestones_url":"https://api.github.com/repos/leberus/radare2/milestones{/number}","notifications_url":"https://api.github.com/repos/leberus/radare2/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/leberus/radare2/labels{/name}","releases_url":"https://api.github.com/repos/leberus/radare2/releases{/id}","deployments_url":"https://api.github.com/repos/leberus/radare2/deployments","created_at":"2016-06-08T23:46:00Z","updated_at":"2016-06-08T23:46:15Z","pushed_at":"2016-12-09T20:40:42Z","git_url":"git://github.com/leberus/radare2.git","ssh_url":"git@github.com:leberus/radare2.git","clone_url":"https://github.com/leberus/radare2.git","svn_url":"https://github.com/leberus/radare2","homepage":"http://www.radare.org/","size":64338,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"radare:master","ref":"master","sha":"4b43aaa5d7fda5b348467b36cc2e5c1b3bf98774","user":{"login":"radare","id":917142,"avatar_url":"https://avatars.githubusercontent.com/u/917142?v=3","gravatar_id":"","url":"https://api.github.com/users/radare","html_url":"https://github.com/radare","followers_url":"https://api.github.com/users/radare/followers","following_url":"https://api.github.com/users/radare/following{/other_user}","gists_url":"https://api.github.com/users/radare/gists{/gist_id}","starred_url":"https://api.github.com/users/radare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/radare/subscriptions","organizations_url":"https://api.github.com/users/radare/orgs","repos_url":"https://api.github.com/users/radare/repos","events_url":"https://api.github.com/users/radare/events{/privacy}","received_events_url":"https://api.github.com/users/radare/received_events","type":"User","site_admin":false},"repo":{"id":4869294,"name":"radare2","full_name":"radare/radare2","owner":{"login":"radare","id":917142,"avatar_url":"https://avatars.githubusercontent.com/u/917142?v=3","gravatar_id":"","url":"https://api.github.com/users/radare","html_url":"https://github.com/radare","followers_url":"https://api.github.com/users/radare/followers","following_url":"https://api.github.com/users/radare/following{/other_user}","gists_url":"https://api.github.com/users/radare/gists{/gist_id}","starred_url":"https://api.github.com/users/radare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/radare/subscriptions","organizations_url":"https://api.github.com/users/radare/orgs","repos_url":"https://api.github.com/users/radare/repos","events_url":"https://api.github.com/users/radare/events{/privacy}","received_events_url":"https://api.github.com/users/radare/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/radare/radare2","description":"unix-like reverse engineering framework and commandline tools","fork":false,"url":"https://api.github.com/repos/radare/radare2","forks_url":"https://api.github.com/repos/radare/radare2/forks","keys_url":"https://api.github.com/repos/radare/radare2/keys{/key_id}","collaborators_url":"https://api.github.com/repos/radare/radare2/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/radare/radare2/teams","hooks_url":"https://api.github.com/repos/radare/radare2/hooks","issue_events_url":"https://api.github.com/repos/radare/radare2/issues/events{/number}","events_url":"https://api.github.com/repos/radare/radare2/events","assignees_url":"https://api.github.com/repos/radare/radare2/assignees{/user}","branches_url":"https://api.github.com/repos/radare/radare2/branches{/branch}","tags_url":"https://api.github.com/repos/radare/radare2/tags","blobs_url":"https://api.github.com/repos/radare/radare2/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/radare/radare2/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/radare/radare2/git/refs{/sha}","trees_url":"https://api.github.com/repos/radare/radare2/git/trees{/sha}","statuses_url":"https://api.github.com/repos/radare/radare2/statuses/{sha}","languages_url":"https://api.github.com/repos/radare/radare2/languages","stargazers_url":"https://api.github.com/repos/radare/radare2/stargazers","contributors_url":"https://api.github.com/repos/radare/radare2/contributors","subscribers_url":"https://api.github.com/repos/radare/radare2/subscribers","subscription_url":"https://api.github.com/repos/radare/radare2/subscription","commits_url":"https://api.github.com/repos/radare/radare2/commits{/sha}","git_commits_url":"https://api.github.com/repos/radare/radare2/git/commits{/sha}","comments_url":"https://api.github.com/repos/radare/radare2/comments{/number}","issue_comment_url":"https://api.github.com/repos/radare/radare2/issues/comments{/number}","contents_url":"https://api.github.com/repos/radare/radare2/contents/{+path}","compare_url":"https://api.github.com/repos/radare/radare2/compare/{base}...{head}","merges_url":"https://api.github.com/repos/radare/radare2/merges","archive_url":"https://api.github.com/repos/radare/radare2/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/radare/radare2/downloads","issues_url":"https://api.github.com/repos/radare/radare2/issues{/number}","pulls_url":"https://api.github.com/repos/radare/radare2/pulls{/number}","milestones_url":"https://api.github.com/repos/radare/radare2/milestones{/number}","notifications_url":"https://api.github.com/repos/radare/radare2/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/radare/radare2/labels{/name}","releases_url":"https://api.github.com/repos/radare/radare2/releases{/id}","deployments_url":"https://api.github.com/repos/radare/radare2/deployments","created_at":"2012-07-03T07:42:26Z","updated_at":"2016-12-09T12:44:16Z","pushed_at":"2016-12-09T20:55:23Z","git_url":"git://github.com/radare/radare2.git","ssh_url":"git@github.com:radare/radare2.git","clone_url":"https://github.com/radare/radare2.git","svn_url":"https://github.com/radare/radare2","homepage":"http://www.radare.org/","size":83772,"stargazers_count":3690,"watchers_count":3690,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":819,"mirror_url":null,"open_issues_count":760,"forks":819,"open_issues":760,"watchers":3690,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/radare/radare2/pulls/6299"},"html":{"href":"https://github.com/radare/radare2/pull/6299"},"issue":{"href":"https://api.github.com/repos/radare/radare2/issues/6299"},"comments":{"href":"https://api.github.com/repos/radare/radare2/issues/6299/comments"},"review_comments":{"href":"https://api.github.com/repos/radare/radare2/pulls/6299/comments"},"review_comment":{"href":"https://api.github.com/repos/radare/radare2/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/radare/radare2/pulls/6299/commits"},"statuses":{"href":"https://api.github.com/repos/radare/radare2/statuses/a6163b39b6fbb23a47ca36bea081abe754fb56e3"}}}}
{"actor":{"display_login":"radare"}}